[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: contascatti x linux



Reply-To : debian-italian@lists.debian.org
In-Reply-To: <002901c1aa76$c21c9340$93d4623e@k9u6n0>; from symantec@katamail.com on Thu, Jan 31, 2002 at 05:45:56PM +0100

On Thu, Jan 31, 2002 at 05:45:56PM +0100, Andrea wrote:
> qualcuno conosce un contascatti per linux che funziona con la potato
> 2.2r2, finora ho provato flash count ma non è aggiornato alle recenti
> tariffe e nettimer che non mi funziona se qualcuno ne conosce altri gli
>sarei molto grato. 

 ciao,
 un tempo me ne son fatto 1 in awk. quando l'ho scritto ero abbonato con 
 l'opzione di sconto del 50% di telecom, che poi <g> hanno abolito...
 a quel punto ho solo modificato lo script per fargli conteggiare le
 telefonate che mi avrebbero dovuto scontare, a prezzo pieno. Attualmente
 lo uso come un indice di massima su quanto spendo, visto che non mi sono
 sbattuto piu' di cosi' per renderlo precisissimo.
 i problemi (quelli piu' gravi ;) di cui attualmente soffre lo script
 sono: 
 - il sabato e la domenica continua a conteggiare gli scatti come durante
   gli altri giorni ( tariffa "alta" dalle 8 alle 18, trariffa "bassa"
   dalle 18 alle 8)
 - per la valutazione della tariffa da applicare lo script tiene conto
   dell'ora di chiusura della connessione al posto di quella d'inizio
 
 si tratta di bug che per me non sono un grosso problema, ma con un po' di
 tuning si possono fixare.

 peraltro non e' possibile vedere in progress quanto si sta pagando per la
connessione in corso, ma solo a fine connessione. (hey, che si tratta di
soli 3 scriptini micrometrici ;)

 il tutto si compone di tre parti:
 * uno script sh per visualizzare a che punto siamo con la bolletta
 * uno script awk che conteggia effettivamente i costi delle chiamate
 * uno script sh in /etc/ppp/ip-down.d per prelevare le informazioni dal
   syslog 



----------8<-------------------8<--------

# contascatti.sh
#!/bin/sh

awk -f contascatti.awk scatti.txt | tail -n 6

----------8<-------------------8<--------



----------8<-------------------8<--------
# contascatti.awk
#
# this code is released under the GNU GPL version 2 or above
#
# ABOUT THIS SCRIPT
#
# Il corpo del programma e' nella funzione contascatti, da essa infatti
# vengono richiamate 3 funzioni a seconda della durata della connessione:
# - tariffa_normale: e' la tariffa per le chiamate inferiori ai 6 minuti,
#   per le quali non conta lo sconto telecom
# - tariffa_sconto_1: e' la tariffa per le chiamaate superiori ai 6
#   minuti, ma inferiori ai 15. Di queste chiamate viene scontata solo la
#   parte superiore ai 6 minuti. I primi 6 minuti sono a tariffa piena.
# - tariffa_sconto_2: e' la tariffa per le chiamate superiori ai 15
#   minuti. Di queste chiamate i primi 6 minuti sono a tariffa piena, i
#   successivi a tariffa 'bassa', per di piu' c'e' lo sconto al 50%.

# KNOWN BUGS
# 1. Nel syslog non viene tenuto conto del sabato e della domenica in cui
# il piano tariffario cambia.
# 2. L'ora di cui si tiene conto per il calcolo degli scatti e' quella di
# chiusura della connessione, non di inizio.


{print $1, $2, $3, $8 ; contascatti($3, $8); i++}
{print "Costo chiamate inferiori a 6 minuti", a;}
{print "Costo chiamate inferiori a 15 minuti", b;}
{print "Costo chiamate superiori a 15 minuti", c;}
{print "Costo chiamate: ", a+b+c ; }
{print "Costo scatti: ", i*127;}
{print "Costo totale, iva inclusa: " (a+b+c+i*127)+((a+b+c+i*127)/5), "<---";}

function contascatti(ora, durata)
{
    if (durata < 6) {
	print "NORMALE";	
	tariffa_normale(durata, ora);
    }
    if ((durata > 6) && (durata < 15)) {
	print "INF 15";
	tariffa_sconto_1(durata, ora);
    }
    if (durata > 15) {
	print "MAG 15";
	tariffa_sconto_2(durata, ora);
    }
}

function tariffa_normale(durata, ora,       orario,costo_min_6, costo_max_6)
{
    split(ora, orario, ":");
    if ((orario[0] < 18) && (orario[0] > 8) &&  (orario[1] < 30)) {
	costo_min_6=durata * 30.6;
	print costo_min_6;
	a+=costo_min_6;

    }
    else {
	costo_max_6 = durata * 17.7;
	print costo_max_6;
	a+=costo_max_6;

    }
}

function tariffa_sconto_1(durata,ora,        orario, costo_min, costo_max, min_sconto) {
    split(ora, orario, ":");
    if ((orario[0] < 18) && (orario[0] > 8) &&  (orario[1] < 30)) {
	min_sconto = durata - 6;
	b+= (min_sconto * 30.6) + 6 * 30.6;
    }
    else {
	min_sconto = durata - 6;
	b+= (min_sconto * 17.7) + 6 * 17.7;
    }
}

function tariffa_sconto_2(durata,ora,        orario, costo_min, costo_max, min_sconto) {
    split(ora, orario, ":");
    if ((orario[0] < 18) && (orario[0] > 8) &&  (orario[1] < 30)) {
	min_sconto = durata - 6;
	c+= (min_sconto * 27.6) + 6 * 27.6;
    }
    else {
	min_sconto = durata - 6;
	c+= (min_sconto * 15.9) + 6 * 15.9;
    }
    
}

-----------8<-----------8<-----------------

e ora l'ultimo script, quello da mettere in /etc/ppp/ip-down.d

----------8<------------8<------------------
# /etc/ppp/ip-down.d/scatti
#!/bin/sh

# AGGIORNAMENTO COSTI DI CONNESSIONE

grep -E '(Dec|Jan).*Connect time' /var/log/syslog > ~little/contascatti/scatti.txt
chown little ~little/contascatti/scatti.txt

----------8<-----------8<--------------------

 quest'ultimo script e' da modificare in base al bimestre in corso: vedi
 il grep:
  grep -E '(Dec|Jan) ..

 per cambiare bimestre, fai:
  grep -E '(Feb|Mar)...

 lasciando il resto come prima.
 questo scriptino salva il risultato del grep in un file che va a finire
 (nel mio caso) in 

 ~/contascatti/scatti.txt

 e per far funzionare il tutto ti consiglio di metter li' anche
 contascatti.sh e contascatti.awk

 l'output che mi da quando lo eseguo e':

Costo chiamate inferiori a 6 minuti 2747.04
Costo chiamate inferiori a 15 minuti 4171.89
Costo chiamate superiori a 15 minuti 25993.3
Costo chiamate:  32912.3
Costo scatti:  18288
Costo totale, iva inclusa: 61440.3 <---


 probabilmente non e' questa la soluzione di cui hai bisogno, ma alla fine
 il codice e' li'

 soon,
 lidl


-- 
                                .-.
free source for free users!     /v\      L   I   N   U   X
                               // \\    >Phear the Penguin<
                              /(   )\
                               ^^-^^



Reply to: