Contatore traffico internet mobile
Moderatore: Staff
Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
- joe
- Iper Master

- Messaggi: 3986
- Iscritto il: ven 27 apr 2007, 11:21
- Slackware: 15.0
- Kernel: 5.15.38
- Desktop: dwm
Contatore traffico internet mobile
Vi spiego cosa mi serve:
Un registro che conti il traffico internet relativo all'interfaccia ppp0 ma SOLO per un apn specifico.
L'apn è il nome del cosiddetto punto di accesso, in soldoni è una stringa con cui va inizailizzato il modem.
Facciamo un esempio: "ibox.tim.it".
Attualmente per connettermi uso uno script di chat e uno script per pppd che lo richiama al suo interno.
Per connettermi praticamente lanci: "pppd call nomescript" (poi non è del tutto vero, ma per fare l'esempio va bene).
L'apn viene usato nello script di chat ecco la stringa che invio al modem:
at+cgdcont=1,"IP","ibox.tim.it"
Facciamo un esempio:
A me serve registrare il traffico fatto attraverso l'apn ibox.tim.it a partire dal giorno di inizo di un'offerta prepagata a volume di traffico fino all'istante attuale (eventuale sessione internet via ibox.tim.it in corso).
Tale traffico che refistro mipiacerebbe che fosse anche esportabile/importabile in un'altro sistema:
di solito utilizzo slackware, ma sto per aggiornare e pertanto uso sovente anche slax su usb da cui sto scrivendo.
In pratica vorrei avere sempre il registro aggiornato ed utilizzabile da entrabi i sistemi.
Attualmente su slack ho fatto un paio di script:
uno parsa il file /var/log/messages e mi dice il traffico effettuato nelle sessioni internet precedenti alla corrente e aventi l'apn considerato.
L'atro controlla la sessione attuale, qualsiasi sia l'apn.
Un terzo script fa la somma del primo più il secondo qualora la sessione corrente sia su apn interressato.
Il problema è che per incastrare il tutto ho dovuto mettere mano a vari /etc/ppp/{ip-up|down}, poi predisporre vari files qua e la ecc ecc.
Infine visto che il risultato viene scritto su un file, va reso visibile così ho aggiunto nel file di configurazione di wmii un cat a tale file che viene fatto ogni secondo o giù di lì insieme alle altre operazioni che riporta il WM.
Su slax c'è kde per cui anche questo punto andrebbe adattato.
Prima di cimentarmi nell'impresa di ricreare il tutto, volevo chiedervi se sapeste indicarmi qualche soluzione alternativa più semplice.
Tenete però bene in conto la finalità e le necessità.
- Giorno di inizio offerta
- APN specifico
- Traffico up+ down
- facile esportabilità/importabiltà
Ok, spero abbiate qualche idea.
Al limite anche se non è una soluzione già del tutto pronta, va benissimo anche una traccia.
Un registro che conti il traffico internet relativo all'interfaccia ppp0 ma SOLO per un apn specifico.
L'apn è il nome del cosiddetto punto di accesso, in soldoni è una stringa con cui va inizailizzato il modem.
Facciamo un esempio: "ibox.tim.it".
Attualmente per connettermi uso uno script di chat e uno script per pppd che lo richiama al suo interno.
Per connettermi praticamente lanci: "pppd call nomescript" (poi non è del tutto vero, ma per fare l'esempio va bene).
L'apn viene usato nello script di chat ecco la stringa che invio al modem:
at+cgdcont=1,"IP","ibox.tim.it"
Facciamo un esempio:
A me serve registrare il traffico fatto attraverso l'apn ibox.tim.it a partire dal giorno di inizo di un'offerta prepagata a volume di traffico fino all'istante attuale (eventuale sessione internet via ibox.tim.it in corso).
Tale traffico che refistro mipiacerebbe che fosse anche esportabile/importabile in un'altro sistema:
di solito utilizzo slackware, ma sto per aggiornare e pertanto uso sovente anche slax su usb da cui sto scrivendo.
In pratica vorrei avere sempre il registro aggiornato ed utilizzabile da entrabi i sistemi.
Attualmente su slack ho fatto un paio di script:
uno parsa il file /var/log/messages e mi dice il traffico effettuato nelle sessioni internet precedenti alla corrente e aventi l'apn considerato.
L'atro controlla la sessione attuale, qualsiasi sia l'apn.
Un terzo script fa la somma del primo più il secondo qualora la sessione corrente sia su apn interressato.
Il problema è che per incastrare il tutto ho dovuto mettere mano a vari /etc/ppp/{ip-up|down}, poi predisporre vari files qua e la ecc ecc.
Infine visto che il risultato viene scritto su un file, va reso visibile così ho aggiunto nel file di configurazione di wmii un cat a tale file che viene fatto ogni secondo o giù di lì insieme alle altre operazioni che riporta il WM.
Su slax c'è kde per cui anche questo punto andrebbe adattato.
Prima di cimentarmi nell'impresa di ricreare il tutto, volevo chiedervi se sapeste indicarmi qualche soluzione alternativa più semplice.
Tenete però bene in conto la finalità e le necessità.
- Giorno di inizio offerta
- APN specifico
- Traffico up+ down
- facile esportabilità/importabiltà
Ok, spero abbiate qualche idea.
Al limite anche se non è una soluzione già del tutto pronta, va benissimo anche una traccia.
- fgcl2k
- Linux 1.x

- Messaggi: 137
- Iscritto il: gio 29 ott 2009, 10:14
- Nome Cognome: Federico
- Slackware: 14.1 (64bit)
- Kernel: 3.10.17
- Desktop: KDE 4.13.3
Re: Contatore traffico internet mobile
Io uso un metodo simile a quello che hai descritto tu per monitorare il traffico della mia chiavetta Internet TIM.
Nello script chiamato da pppd uso la direttiva 'ipparam' per passare l'identificativo della connessione agli script in /etc/ppp/ip-down.d (per esempio 'ippparam TIM'). Lo script in ip-down.d usa i parametri ricevuti da pppd (PPP_IPPARAM, BYTES_SENT, BYTES_RCVD, ecc.) per scrivere una riga in un apposito file di log (/etc/ppp/statistics). Naturalmente i dati diventano visibili solo dopo la chiusura della connessione.
Infine, un programmino in Python-GTK mostra graficamente il file di log e calcola i totali. Ho usato questo sistema su Slackware, Debian e Ubuntu.
Se sei interessato ti faccio avere il tutto.
Nello script chiamato da pppd uso la direttiva 'ipparam' per passare l'identificativo della connessione agli script in /etc/ppp/ip-down.d (per esempio 'ippparam TIM'). Lo script in ip-down.d usa i parametri ricevuti da pppd (PPP_IPPARAM, BYTES_SENT, BYTES_RCVD, ecc.) per scrivere una riga in un apposito file di log (/etc/ppp/statistics). Naturalmente i dati diventano visibili solo dopo la chiusura della connessione.
Infine, un programmino in Python-GTK mostra graficamente il file di log e calcola i totali. Ho usato questo sistema su Slackware, Debian e Ubuntu.
Se sei interessato ti faccio avere il tutto.
- joe
- Iper Master

- Messaggi: 3986
- Iscritto il: ven 27 apr 2007, 11:21
- Slackware: 15.0
- Kernel: 5.15.38
- Desktop: dwm
Re: Contatore traffico internet mobile
A me servirebbe che anche i dati della sessione ppp corrente siano compresi. Sarebbe una caratteristica indispensabile... Alcune tariffe se sfori anche di un MB ti scalano 40 euro... pertanto il traffico relativo alla sessione corrente è tutt'altro che trascurabile.
Inoltre mi piacerebbe creare un accrocchio impacchettabile in modo da non dovermi scervellare ogni volta che cambierò sistema: creo un tgz che potrò poi installare in qualsiasi slackware futura, oppure potrò convertire i altri fomrati di pacchettizzazione, penso ad esempio agli lzm di slax visto che ora sono su questo sistema.
Per il resto anche io utilizzo lo script /etc/ppp/ip-up in combinazione con il parametro 'ipparm' contenuto in /etc/ppp/peers/ibox per fare un esempio.
Anzi a sto punto, posso anche postare qualcosa. Premetto che tengo monitorato solamente il traffico relativo a connessione con apn "wap.tim.it".
Ehm.... sinceramente l'ultimo pezzo non ricordo bene a cosa serva...
Cioè in pratica controlla che l'ultima connessione instaurata sia verso l'apn wap:
infatti quando ci si connette su apn wap viene assegnato ip privato del tipo 10.x.x.x.
Se fosse questo il caso viene creato un file di controllo definito dalla variabile WAPUP.
Ora non ricordo bene la necessità di questa operazione, cioè questo script viene fatto girare all'atto della connessione e solo se tale connessione è verso apn wap. Non ricordo/capisco che bisogno ci sarebbe di riverificare che l'ip sia privato... anzi il giorno che alla tim decidessero di cambiare le carte in tavola, tutto l'accrocchio potrebbe non funzionare più.
Va bè proseguiamo:
Infine lo script che fa la somma totale:
Unica coa, mi viene il dubbio sull'utilità del blocco condizionale finale nello script che usa come condizione l'ip privato 10.x.x.x.
Bò, sinceramente ora non ricordo, pertanto visto che funziona senza grossi problemi per ora lo lascio stare.
Faccio notare anche che lo script monitor.ppp.new.sh gira solo se è avviato il WM, nel caso specifico wmii:
Ovvero quando viene lanciato wmii, la barra inferiore viene popolata dall'output dei comandi sopracitati che per forza di cose vengono fatti girare a cadenza prestabilita dalle impostazioni del wmii...no sò sarà ogni secondo o giù di lì...
In pratica il discorso è che:
wapcounter.sh è uno script piuttosto banale:
se la connessione attuale è via apn "wap", riporta il traffico wap come somma dei valori scritti su due files, se la connessione attuale non è via apn "wap" riporta il traffico wap come somma di "zero" + il totale wap relativo alle sessioni wap precedenti.
Deve essere chiaro che se non gira costantemente lo script "monitor.ppp.new.sh", il traffico totale riportato è sballato per difetto il che non è accetabile.
Quindi occorre che ci sia un demone che in qualche modo faccia continuamente girare quello script.
Io non l'ho fatto, paerchè mi serve solo avere sottocchio il traffico quando navigo. pertanto tutto l'accrocchio è costruito in modo da funzionare integrato in wmii.
Nulla vieta in ogni caso di lanciare:
monitor.ppp.new.sh&&wapcounter.sh
In tal modo dapprima viene aggiornato il traffico relativo alla sessione corrente (che sia wap o no). Dopodichè wapcounter.sh somma evetualmente tale valore al traffico wap delle sezioni precedenti.
Insomma, il funzionamento non è poi così lineare probabilmente. Per questo cercavo una soluzione precotta oppure una revisione di quanto ho prodotto e uso da tempo al fine di renderla migliore, e al fine di renderla più facilmente esportabile (come ho detto avevo in mente ad un pacchetto tgz o txz che sia).
Il punto è che non bastano i 3 script, ma occorre anche la configurazione di diversi files il che mi rende la cosa un po' più difficile e confusa quando devo trasportare il tutto su un nuovo sistema...
Se avete qualche opinione in merito la terrò senz'altro in considerazione.
Ah...
Alcuni files sono ancora nell'hd interno, ora sto lavorando da slax su usb. Mi pare di non aver dimenticato nulla... o almeno spero
Inoltre mi piacerebbe creare un accrocchio impacchettabile in modo da non dovermi scervellare ogni volta che cambierò sistema: creo un tgz che potrò poi installare in qualsiasi slackware futura, oppure potrò convertire i altri fomrati di pacchettizzazione, penso ad esempio agli lzm di slax visto che ora sono su questo sistema.
Per il resto anche io utilizzo lo script /etc/ppp/ip-up in combinazione con il parametro 'ipparm' contenuto in /etc/ppp/peers/ibox per fare un esempio.
Anzi a sto punto, posso anche postare qualcosa. Premetto che tengo monitorato solamente il traffico relativo a connessione con apn "wap.tim.it".
Codice: Seleziona tutto
# cat /mnt/hdc6/etc/ppp/peers/btwap
/dev/rfcomm0 9600
connect '/usr/sbin/chat -v -f /etc/ppp/wap.chat'
noauth
novj
novjccomp
mru 1500
mtu 1500
debug
ipparam wap
Codice: Seleziona tutto
# cat /mnt/hdc6/etc/ppp/wap.chat
'' \d
'' 'atz'
OK 'at+cgatt=1'
OK 'at+cgdcont=1,"IP","wap.tim.it"'
OK 'atd*99***1#'
Codice: Seleziona tutto
# cat /mnt/hdc6/etc/ppp/ip-up
#!/bin/bash
set -x
# lo scritp ip-up è richiamato dal demone pppd
# quindi occorre assicurarsi che i programmi coinvolti
# siano raggiungibili
export PATH=$PATH:/sbin
echo $1
case "$6" in
ibox)
;;
wap)
# calcolo del traffico Wap nelle precedenti sessioni:
/usr/mybin/tcounter.sh
;;
esacCodice: Seleziona tutto
cat /etc/ppp/ip-down
#!/bin/bash
# Mette a zero il traffico attuale, serve per il
# corretto funzionamento degli script di
# monitoraggio rete.
echo 0 > /var/log/ppp0traffic.txt
chmod 777 /var/log/ppp0traffic.txt
# rimuove il file di controllo connessione wap
# serve sempre per gli scripts di cui sopra.
[ -f /var/log/wapup ] && rm /var/log/wapup
Codice: Seleziona tutto
# cat /usr/mybin/tcounter.sh
#!/bin/bash
set -x
STARTDAY="Apr 13"
LOGFILE=/var/log/ppp
OUTFILE=/var/log/wapcounter.txt
WAPUP=/var/log/wapup
STARTAMOUNT=40
num=$(grep -n "${STARTDAY}" $LOGFILE|head -n1|sed 's/:.*//')
TMPFILE=$(tempfile)
tail -n +${num} $LOGFILE \
|grep 'pppd.*Sent.*received\|local IP address 10\.' \
|grep -A 1 'local IP'|grep Sent \
|sed -e 's/.*Sent //' -e 's/ by.*d//' -e 's/ b.*$//' \
>$TMPFILE
amount=$STARTAMOUNT
while read a b
do
amount=$(echo "scale=3; ($a+$b)/1000/1000+$amount"|bc)
done < $TMPFILE
rm $TMPFILE
echo $amount > $OUTFILE
# la variabile $amount contiene il traffico scambiato dall'inizio
# della sottoscrizione dell'offerta wap, fino all'ultima
# disconnessione. Quindi non comprende i dati scambiati nella
# eventuale sessione corrente.
if grep "local IP" $LOGFILE|tail -n1 \
| grep "[ ]10\.[0-9]*\.[0-9]*\.[0-9]*$"
then
touch $WAPUP
fi
Cioè in pratica controlla che l'ultima connessione instaurata sia verso l'apn wap:
infatti quando ci si connette su apn wap viene assegnato ip privato del tipo 10.x.x.x.
Se fosse questo il caso viene creato un file di controllo definito dalla variabile WAPUP.
Ora non ricordo bene la necessità di questa operazione, cioè questo script viene fatto girare all'atto della connessione e solo se tale connessione è verso apn wap. Non ricordo/capisco che bisogno ci sarebbe di riverificare che l'ip sia privato... anzi il giorno che alla tim decidessero di cambiare le carte in tavola, tutto l'accrocchio potrebbe non funzionare più.
Va bè proseguiamo:
Codice: Seleziona tutto
# cat /mnt/hdc6/usr/mybin/monitor.ppp.new.sh
#!/bin/bash
# restituisce lo stato della connessione su ppp0 col
# totale dei MB scambiati nella sessione corrente.
OUTFILE=/var/log/ppp0traffic.txt
if ifconfig ppp0 > /dev/null 2>&1; then
TMPF=$(tempfile)
ifconfig ppp0 |grep by| sed 's/^[^:]*://'|sed 's/([^\)]*)//g'|sed 's/T.*://'>$TMPF
read a b < $TMPF
traffic=$(echo "scale=3; ($a+$b)/1000/1000"|bc)
echo "ppp0: $traffic MB"
echo $traffic > $OUTFILE
# chmod a+w $OUTFILE
rm $TMPF
else
echo "ppp0: non connesso"
fiCodice: Seleziona tutto
# cat /mnt/hdc6/usr/mybin/wapcounter.sh
#!/bin/bash
# si basa sugli scripts tcounter.sh e monitor.ppp.new.sh:
# Il primo viene eseguito alla connessione (ppp0)
# attraverso lo script /etc/ppp/ip-up e scrive il
# traffico wap in MB, realtivo alle sessioni precedenti
# sul file /var/log/wapcounter.txt.
# Inoltre stabilisce se la corrente sessione di
# connessione è via wap o meno, creando eventualmente
# il file /var/log/wapup.
#
# Il secondo scrive sul file /var/log/ppp0traffic.txt
# il valore in MB di dati scabiati nella corrente
# sessione di connessione via ppp0.
# Gira costantemente attraverso wmii, altrimenti va fatto
# girare a mano
# il presente script deve stabilire quanti dati sono statii
# scambiati totalmente via WAP sommando quelli registrati
# dallesessioni precedenti a quelli correnti
#set -x
WAPOLD=/var/log/wapcounter.txt
WAPCURRENT=/var/log/ppp0traffic.txt
WAPON=/var/log/wapup
current=0
old=$(cat $WAPOLD)
if [ -f $WAPON ]
then
current=$(cat $WAPCURRENT)
fi
total=$(echo "scale=3; $old+$current"|bc)
echo $totalBò, sinceramente ora non ricordo, pertanto visto che funziona senza grossi problemi per ora lo lascio stare.
Faccio notare anche che lo script monitor.ppp.new.sh gira solo se è avviato il WM, nel caso specifico wmii:
Codice: Seleziona tutto
# grep ppp /mnt/hdc6/home/simplyjoe/.wmii-3.5/wmiirc
echo -n WAP traffic: $(wapcounter.sh) MB '|' Disk-Space: $(df -h |grep hdc6|sed 's/^[^G]*//'| sed 's/G[^G]*//'| sed 's/^G //' | sed 's/ \/$//') '|' $(monitor.ppp.new.sh) '|' Used.Mem $(free -m |grep +|sed 's/^.*:[ ]*//'|sed 's/[ ]*...$//') MB '|' $(uptime | sed 's/.*://; s/,//g') '|' $(date)In pratica il discorso è che:
wapcounter.sh è uno script piuttosto banale:
se la connessione attuale è via apn "wap", riporta il traffico wap come somma dei valori scritti su due files, se la connessione attuale non è via apn "wap" riporta il traffico wap come somma di "zero" + il totale wap relativo alle sessioni wap precedenti.
Deve essere chiaro che se non gira costantemente lo script "monitor.ppp.new.sh", il traffico totale riportato è sballato per difetto il che non è accetabile.
Quindi occorre che ci sia un demone che in qualche modo faccia continuamente girare quello script.
Io non l'ho fatto, paerchè mi serve solo avere sottocchio il traffico quando navigo. pertanto tutto l'accrocchio è costruito in modo da funzionare integrato in wmii.
Nulla vieta in ogni caso di lanciare:
monitor.ppp.new.sh&&wapcounter.sh
In tal modo dapprima viene aggiornato il traffico relativo alla sessione corrente (che sia wap o no). Dopodichè wapcounter.sh somma evetualmente tale valore al traffico wap delle sezioni precedenti.
Insomma, il funzionamento non è poi così lineare probabilmente. Per questo cercavo una soluzione precotta oppure una revisione di quanto ho prodotto e uso da tempo al fine di renderla migliore, e al fine di renderla più facilmente esportabile (come ho detto avevo in mente ad un pacchetto tgz o txz che sia).
Il punto è che non bastano i 3 script, ma occorre anche la configurazione di diversi files il che mi rende la cosa un po' più difficile e confusa quando devo trasportare il tutto su un nuovo sistema...
Se avete qualche opinione in merito la terrò senz'altro in considerazione.
Ah...
Alcuni files sono ancora nell'hd interno, ora sto lavorando da slax su usb. Mi pare di non aver dimenticato nulla... o almeno spero
- joe
- Iper Master

- Messaggi: 3986
- Iscritto il: ven 27 apr 2007, 11:21
- Slackware: 15.0
- Kernel: 5.15.38
- Desktop: dwm
Re: Contatore traffico internet mobile
Ho riletto la risposta di fgcl2k, sbirciato un po' sul man di pppd e ho deciso di riscrivere gli script in modo un po' differente.
Premetto solo un appunto circa una variabile citata da fgcl2:
PPP_IPPARAM
Francamente nel manual di pppd non si trova nulla in merito.
Invece esiste il paramentro:
ipparam
da inserire nello script di pppd: /etc/ppp/peers/wap, per esempio.
gli script ip-up e ip-down utilizzeranno tale valore comese fosse il sesto argomento $6, infatti vengono lanciati da pppd con degli argomenti.. per i detagli è spiegato in "man pppd".
In pratica se la connessione viene avviata con:
pppd call wap
viene usato da pppd lo script /etc/ppp/peers/wap
nel quale avremo messo etichettato la connessione come "wap":
ipparam wap
Ora se in /etc/ppp/ip-up e ip-down usiamo "$6" questo conterrà proprio "wap".
Cercherò brevemente di spiegarvi come funzinano i nuovi script e via nticipo la domanda.
Il fine è quello di ottenere un pacchetto che una volta installato consenta di connettersi via apn wap tenendo conteggiato il traffico wap in Bytes o MBytes relativo ad un periodo di tempo definito a partire daun giorno di inizio di una certa offerta.
In sintesi ho tenuto separate le due circostanze:
1) traffic.sh
Segna sul file "current" il traffico della sessione internet attuale con la frequenza di 1 secondo, viene attivato in fase di connessione dallo script ip-up. Gira fintanto che l'interfaccia ppp0 non risulta in piedi. Infase di disconnessione, ip-down lo richiama con l'argomento "stop", in tal modo scrive "0" sul file "current".
2) wapcounter.sh
Registra l'ammontare del traffico relativo all'ultima connessione (via apn wap) su un file di log opportunamente nominato (date eccecc). Inoltre somma tale valore al contenuto del file "old" che rappresentava il traffico effettuato nelle precedenti sessioni wap.
3) waptotal.sh
Si occupa di sommare il contenuto dei files "current" e "old" e convertirne il risultato in MBytes.
Non viene avviato in automatico, ma è possibile utilizzarlo a mano.
Inoltre, il suo fine d'uso sarebbe destinato ad essere fatto girare da qualche tool, applet ecc compreso nell'ambiente grafico che si usa.
In pratica, abbiamo due files "current" e "old", la cui somma dovrebbe dare in ogni circostanza il totale di bytes consumati a partire dal giorno in cui iniziava l'offerta.
Il giorno di inizio/rinnovo offerta è un punto critico.
Nel mio caso l'offerta che considero si aggiorna automaticamente ogni settimana senza accumulo dell'eventuale traffico non utilizzato.
Ho pensato così di far gestire allo script numero (2) wapcounter.sh questo aspetto:
nel file di configurazione wapcounter.conf definisco il giorno in cui inizia/si rinnova l'offerta: assegnando tale valore alla variabile STARTDAY.
Lo script avviato da ip-up in fase di connessione, stabilisce se l'attuale sessione internet è la prima del giorno, eventualmente valuta se si tratta proprio del giorno di rinnovo (essendo un'opzione a rinnovo settimanale resta fisso il giorno della settimana "date +%A"), se anche questa condizione risulta verificata, viene azzerato il contenuto del file "old".
In teoria dovrebbe funzionare.
Mi resta qualche dubbio sul primo script:
infatti contiene un ciclo while che termina quando "ifconfig ppp0" non restituisce più 0
ip-down d'altra parte lo richiama con altro argomento per fargli azzerate il file "current"
- se ip-down viene richiamato dopo che ppp0 non c'è più e quindi ifconfig è non nullo e lo script traffic.sh non sta più girando,allora nono c'è problema.
- se ifconfig risulta ancora in piedi, lo script chiamato da ip-down azzera "current", ma lo stesso script chiamato prima da ip-up vede ppp0 ancora sue scrive in current il traffico non nullo. Poi quando si somma, il valore del totale risulta falsato.
Dal man non capisco bene quando esattamente ip-down venga lanciato, cioè se al momento del lancio, "ifconfig ppp0" dica ok o invece dia errore.
Preferisco non continuare in questo post, in modo da non appesantire ulteriormente la lettura.
Premetto solo un appunto circa una variabile citata da fgcl2:
PPP_IPPARAM
Francamente nel manual di pppd non si trova nulla in merito.
Invece esiste il paramentro:
ipparam
da inserire nello script di pppd: /etc/ppp/peers/wap, per esempio.
gli script ip-up e ip-down utilizzeranno tale valore comese fosse il sesto argomento $6, infatti vengono lanciati da pppd con degli argomenti.. per i detagli è spiegato in "man pppd".
In pratica se la connessione viene avviata con:
pppd call wap
viene usato da pppd lo script /etc/ppp/peers/wap
nel quale avremo messo etichettato la connessione come "wap":
ipparam wap
Ora se in /etc/ppp/ip-up e ip-down usiamo "$6" questo conterrà proprio "wap".
Cercherò brevemente di spiegarvi come funzinano i nuovi script e via nticipo la domanda.
Il fine è quello di ottenere un pacchetto che una volta installato consenta di connettersi via apn wap tenendo conteggiato il traffico wap in Bytes o MBytes relativo ad un periodo di tempo definito a partire daun giorno di inizio di una certa offerta.
In sintesi ho tenuto separate le due circostanze:
1) traffic.sh
Segna sul file "current" il traffico della sessione internet attuale con la frequenza di 1 secondo, viene attivato in fase di connessione dallo script ip-up. Gira fintanto che l'interfaccia ppp0 non risulta in piedi. Infase di disconnessione, ip-down lo richiama con l'argomento "stop", in tal modo scrive "0" sul file "current".
2) wapcounter.sh
Registra l'ammontare del traffico relativo all'ultima connessione (via apn wap) su un file di log opportunamente nominato (date eccecc). Inoltre somma tale valore al contenuto del file "old" che rappresentava il traffico effettuato nelle precedenti sessioni wap.
3) waptotal.sh
Si occupa di sommare il contenuto dei files "current" e "old" e convertirne il risultato in MBytes.
Non viene avviato in automatico, ma è possibile utilizzarlo a mano.
Inoltre, il suo fine d'uso sarebbe destinato ad essere fatto girare da qualche tool, applet ecc compreso nell'ambiente grafico che si usa.
In pratica, abbiamo due files "current" e "old", la cui somma dovrebbe dare in ogni circostanza il totale di bytes consumati a partire dal giorno in cui iniziava l'offerta.
Il giorno di inizio/rinnovo offerta è un punto critico.
Nel mio caso l'offerta che considero si aggiorna automaticamente ogni settimana senza accumulo dell'eventuale traffico non utilizzato.
Ho pensato così di far gestire allo script numero (2) wapcounter.sh questo aspetto:
nel file di configurazione wapcounter.conf definisco il giorno in cui inizia/si rinnova l'offerta: assegnando tale valore alla variabile STARTDAY.
Lo script avviato da ip-up in fase di connessione, stabilisce se l'attuale sessione internet è la prima del giorno, eventualmente valuta se si tratta proprio del giorno di rinnovo (essendo un'opzione a rinnovo settimanale resta fisso il giorno della settimana "date +%A"), se anche questa condizione risulta verificata, viene azzerato il contenuto del file "old".
In teoria dovrebbe funzionare.
Mi resta qualche dubbio sul primo script:
infatti contiene un ciclo while che termina quando "ifconfig ppp0" non restituisce più 0
ip-down d'altra parte lo richiama con altro argomento per fargli azzerate il file "current"
- se ip-down viene richiamato dopo che ppp0 non c'è più e quindi ifconfig è non nullo e lo script traffic.sh non sta più girando,allora nono c'è problema.
- se ifconfig risulta ancora in piedi, lo script chiamato da ip-down azzera "current", ma lo stesso script chiamato prima da ip-up vede ppp0 ancora sue scrive in current il traffico non nullo. Poi quando si somma, il valore del totale risulta falsato.
Dal man non capisco bene quando esattamente ip-down venga lanciato, cioè se al momento del lancio, "ifconfig ppp0" dica ok o invece dia errore.
Preferisco non continuare in questo post, in modo da non appesantire ulteriormente la lettura.
- joe
- Iper Master

- Messaggi: 3986
- Iscritto il: ven 27 apr 2007, 11:21
- Slackware: 15.0
- Kernel: 5.15.38
- Desktop: dwm
Re: Contatore traffico internet mobile
Il problema è il seguente.
Questa serie di scripts e files di configurazione potrebbero essere pensati come un pacchetto, facilmente trasportabile anche su altri sistemi.
Ho pretanto pensato mettere tutti i files coinvolti in una dir tipo direcctory dei sorgenti.
E scrivere un file in grado di replicare i rami di un filesistem, quindi /etc, /usr, ecc ecc. e copiarvici i vari files. Una sorta di makefile.
In tal modo avrei una dir dei sorgenti standard, valida un po' per tutte le distribuzioni.
Inoltre potrei predisporre uno slackbuild, molto semplice, con slack-desc al seguito e creare un bel pacchetto slackware in modo da poter ottenere il pacchetto su un altro ssitema slackware senza alcuno sbattimanto.
Ora, ho parecchi dubbi sui vari files di configurazione coinvolti.
/etc/ppp/ip-up
/etc/ppp/ip-down
/etc/ppp/wap.chat
/etc/ppp/peers/wap
Tutti questi files, potrebbero essere già presenti sul sistema, d'altra parte vanno modificati altrimenti gli script non funzioneranno.
In un primo momento avevo pensato di includerli nel pacchetto in modo che andassero a sovrascrivere quelli già presenti, ma non mi pare saggio, per nulla.
D'altra parte se si dovesse configurare il tutto manualmente, ecco che verebbe men l'utilità di pacchettizzare il malloppo.
Potrei prevedere un ulteriore script chiamato per esempio traffic-configure.sh, che in fase di installazione consideri se tali files sono già presenti e se sovrascriverli oppure no... magari installando i file di configurazione targati ".new".
Un po' come succede con i pacchetti slakcware, ma non so come si fà in questo punto dei files di configurazione...
Avreste qualche idea?
Per il momento il tutto è in ~/build/src/traffic:
Vi allego un po' tutto, premettendo che non vi è nulla di testato e nel README sono scritti solo appunti di poca importanza.
Chissà se riesco ad allegare l'intera directory...provo... nada dice il file allegao è vuoto. Pazienza metto file per file.
...
Ok, ok cambio anche l'estensione in TXT...
Anzi per far prima mando tutto in un file unico. Spero si capisca.
Questa serie di scripts e files di configurazione potrebbero essere pensati come un pacchetto, facilmente trasportabile anche su altri sistemi.
Ho pretanto pensato mettere tutti i files coinvolti in una dir tipo direcctory dei sorgenti.
E scrivere un file in grado di replicare i rami di un filesistem, quindi /etc, /usr, ecc ecc. e copiarvici i vari files. Una sorta di makefile.
In tal modo avrei una dir dei sorgenti standard, valida un po' per tutte le distribuzioni.
Inoltre potrei predisporre uno slackbuild, molto semplice, con slack-desc al seguito e creare un bel pacchetto slackware in modo da poter ottenere il pacchetto su un altro ssitema slackware senza alcuno sbattimanto.
Ora, ho parecchi dubbi sui vari files di configurazione coinvolti.
/etc/ppp/ip-up
/etc/ppp/ip-down
/etc/ppp/wap.chat
/etc/ppp/peers/wap
Tutti questi files, potrebbero essere già presenti sul sistema, d'altra parte vanno modificati altrimenti gli script non funzioneranno.
In un primo momento avevo pensato di includerli nel pacchetto in modo che andassero a sovrascrivere quelli già presenti, ma non mi pare saggio, per nulla.
D'altra parte se si dovesse configurare il tutto manualmente, ecco che verebbe men l'utilità di pacchettizzare il malloppo.
Potrei prevedere un ulteriore script chiamato per esempio traffic-configure.sh, che in fase di installazione consideri se tali files sono già presenti e se sovrascriverli oppure no... magari installando i file di configurazione targati ".new".
Un po' come succede con i pacchetti slakcware, ma non so come si fà in questo punto dei files di configurazione...
Avreste qualche idea?
Per il momento il tutto è in ~/build/src/traffic:
Vi allego un po' tutto, premettendo che non vi è nulla di testato e nel README sono scritti solo appunti di poca importanza.
Chissà se riesco ad allegare l'intera directory...provo... nada dice il file allegao è vuoto. Pazienza metto file per file.
...
Ok, ok cambio anche l'estensione in TXT...
Anzi per far prima mando tutto in un file unico. Spero si capisca.
- Allegati
-
allegato.TXT- (7.38 KiB) Scaricato 58 volte
- joe
- Iper Master

- Messaggi: 3986
- Iscritto il: ven 27 apr 2007, 11:21
- Slackware: 15.0
- Kernel: 5.15.38
- Desktop: dwm
Re: Contatore traffico internet mobile
Nessuna opinione?