domenica, aprile 15, 2007

Controllare la soglia di Naviga 3 con Linux

Come ho già scritto, l'offerta Naviga 3 ha un difetto: è difficile tenere sotto controllo la soglia dei 50MB.
Inoltre presenta un bug (che d'ora in poi chiamerò "bug della mezzanotte"): se si fa una connessione a cavallo fra due giorni, superata la mezzanotte la soglia non si azzera, ma prosegue con quella del giorno precedente.
Come non bastasse, in questi casi non c'è modo di conoscere la soglia rimasta perchè nel sito della tre la soglia si azzera.
Questo bug, mi è costato un po' (nel vero senso della parola) per scoprirlo, ma ora ho modo di usarlo a mio vantaggio!

UPDATE: dopo un lungo scambio di email con in servizio clienti, mi hanno RIMBORSATO! => ecco come quando dove e perchè.


Infatti ho scritto un piccolo script per la shell che conteggia il traffico effettuato è quando arrivo a 47MB mi avvisa e mi chiede se voglio disconnettermi.
Questo script tiene in considerazione il "bug della mezzanotte" e lo sfrutta!

Per installare il questo mio script basta creare un file

sudo kwrite /usr/local/bin/stat3.sh
con il seguente contenuto:
#!/bin/bash

LOG=$HOME/.naviga3.log
PPPSTATS="/usr/sbin/pppstats ppp0"
DATA=`date '+%d/%m/%Y'`

if [ -w $LOG -a `cat $LOG | cut -f1 -d' '` = $DATA ]; then
TRAFFICO_OLD=`cat $LOG | awk '{print $2}'`
fi

while :
do
TRAFFICO=$((TRAFFICO_OLD \
+ `$PPPSTATS | tail -n 1 | awk '{print $1}'` \
+ `$PPPSTATS | tail -n 1 | awk '{print $7}'`))

echo "$DATA $TRAFFICO" > $LOG

if [ $TRAFFICO -ge 49283072 ]; then
kdialog --warningyesno "ATTENZIONE! \n \
Hai consumato $((TRAFFICO / 1048576)) MB \
dei 50 MB disponibili. \
\n Vuoi interrompere?"

case $? in
0)
killall pppd
exit;;

1)
sleep 30;;
esac
fi

sleep 15
done

e dargli i permessi di esecuzione:
chmod +x /usr/local/bin/stat3.sh

Fatto questo basta dire a kppp di eseguire lo script appena connessi modificano le impostazioni.
Aprire quindi kppp è andare su "Configura...", poi selezionare l'account e premete "Modifica...".
Fato questo dovete scorrere le schede vero destra fino a raggiungere la scheda "Esegui" e scrivere su "Appena connesso" la stringa
/usr/local/bin/stat3.sh
.


Confermate e connettetevi.

Verrà creato nella vostra directory home un file di nome
.naviga3.log
dove ogni 15 secondi viene salvata la data in cui si è iniziata la connessione con il rispettivo traffico effettuato.

Se è la prima volta in giornata che vi connettete non dovete fare altro.
Ma se avete usato già parte del traffico, dovete cambiare nel file
.naviga3.log
presente nella vostra directory home il numero scritto dopo la data con il traffico effettuato in giornata espresso in byte. (MB x 1024 x 1024 = byte).

Lo script si autotermina appena ci si disconnette.

Se avete migliorie non esitate a dirle!

18 commenti:

Anonimo ha detto...

Carino.

Alcune migliorie:
1) Consiglierei di usare "cut"
al posto di "awk"
es. cut -f1 -d' ' ${LOG}

2) le variabile le dichiaro sempre
in MAIUSCOLO (ma questo dipende
dallo stile di ogniuno...)

3) ${VAR} e' preferibile a $VAR

4) Al posto del "case"
Utilizza "if [ $? -eq 0 ]; then"
... else
Visto che vuoi controllare solo
due casi (ok e non_ok)

5) Utilizzi kdialog
E per altri desktop che non
siano KDE ?

Ciao e Buona Giornata

daniele ha detto...

Grazie mille per i consigli!
Ottimo l'uso di cut al posto di awk!

Si, non ho pensato agli gnomisti ...
ma rimedio subito:
basta sostituire a:

kdialog --warningyesno "ATTENZIONE! \n \
Hai consumato $((traffico / 1048576)) MB \
dei 50 MB disponibili. \
\n Vuoi interrompere?"


questo:

zenity --warning --text "ATTENZIONE! \n \
Hai consumato $((traffico / 1048576)) MB \
dei 50 MB disponibili. \
\n Vuoi interrompere?"


Questa sera modificherò lo script con le modifiche consigliate.

denis frati ha detto...

ciao daniele, ho letto con interesse del tuo script per il conteggio dei MegaByte, in quanto ho appena configurato l'ubuntu di un amico per connettersi con il suo samsung con l'opzione navigatre, che dal primo luglio diventerà di 100 M.
ho configurato la sua connessione attraverso wvdial, volevo domandarti come poter inserire l'avvio dello script per il conteggio usando appunto wvdial.
grazie, ciao

fabio.gravina ha detto...

Ciao daniele nel tuo post script ho notato che usi popstats, ma sul mio sistema non è installato e apt-get non lo trova.
Come si installa??
grazie ciao

fabio.gravina ha detto...

niente niente ho solo letto male
ho confuso pppstats con popstats
tutto risolto ciao

Anonimo ha detto...

mi spieghi meglio questo fatto della shell ????

puoi scrivermi qui:
idrusa98 at libero . it

grazie !
gianni

hfish ha detto...

ciao e grazie per il tuo lavoro per la comunità...

c'è però qualcosina che non mi torna nel tuo script...

cat ~/.naviga3.log restituisce
25/07/2007 10454254, ovvero ~9.96Mb

se invece controllo le soglie dal portale 3 risultano 10.85Mb utilizzati, cioè circa 900K di differenza, che non è proprio poco...

va bene che il tuo script avvisa ai 43Mb, ma vorrei comunque capire cosa c'è all'origine di questa discrepanza...

idee??

ciao
luca

Umberto "crash_override" Bernardi ha detto...

Ciao, per far funzionare le segnalazioni sotto Gnome per esempio basta usare Zenity al posto di "Kdialog"

Per esempio:

zenity --question --text="Soglia quasi raggiunta! Disconnettere?" --no-wrap
[ "$?" -eq 0 ] && killall pppd

Speri di essere stato utile.
Ciao a tutti

colossus ha detto...

>ho configurato la sua connessione >attraverso wvdial, volevo domandarti come >poter inserire l'avvio dello script per >il conteggio usando appunto wvdial.
>grazie, ciao

Devi mettere lo script in /etc/ppp/ e chiamarlo ip-up

Kekko ha detto...

Ciao, complimenti per lo script, davvero molto utile... mi chiedevo se era possibile dividire il risultato per 1048576 (1024*1024 in modo da ottenere la print in Mb)... sapresti indicarmi con esattezza il codice da modificare? Nn vorrei sbagliare qualcosa... i Mb sono preziosi hihi

Anonimo ha detto...

ciao scusa la domanda scema..quindi io se prendo un pc con linux riesco a usare naviga 3 col cell e col cavetto??per configurrlo come faccio??grazie mille!!

fenix ha detto...

Ciao a tutti, volevo segnalarvi il seguente link:
http://portus.altervista.org/

Qui troverete una semplice applet scritta da me per controllare la soglia di naviga3.

Alessio Mangoni ha detto...

Ciao e complimenti per l'idea..Molto utile, tuttavia io utilizzo Sabayon 3.4 con Desktop manager Gnome (ma uso KPPP perchè GnomePPP non mi piace granchè..)

ho questi problemi:
-non mi crea il file .naviga3.log (l'ho creato manualmente scrivendo all'interno il numero di bytes consumati da me oggi)

-una volta creato e connesso ad internet, provo ad eseguire lo script (stat3.sh)che ho modificato seguendo i suggerimenti di "anonimo" cioè cut al posto di awk ma ricevo questo output:
>>
cut: you must specify a list of bytes, characters, or fields
Usare `cut --help' per ulteriori informazioni.
cut: you must specify a list of bytes, characters, or fields
Usare `cut --help' per ulteriori informazioni.
/usr/local/bin/stat3.sh: line 15: TRAFFICO_OLD + + : syntax error: operand expected (error token is " ")
>>

credo di aver sbagliato la sintassi per gli argomenti di "cut" e poi alla riga 15 c'è un altro errore di sintassi..

Suggerimenti?

Grazie ancora e complimenti

Tole ha detto...

Ciao a tutti.
Sto ultimando in questi giorni la scrittura di un software in python basato su pyWvDial-0.5 (è una GUI per wvdial) proprio per tenere sottocontrollo il traffico ed eventualmente disconnettere senza conferma da parte dell'utente.
Il software è già funzionante anche se devo ancora testarlo a fondo ed ottimizzarlo un po'. Avevo intenzione di fare una paginetta da qualche parte con le istruzioni per configurarlo al meglio e fare l'upload dell'archivio contenente il sorgente, ma il tempo a disposizione è poco. Se l'amministratore di questo blog è daccordo gli invio tutto via mail e magari "mi scrive una recensione".... :D
Spero di far cosa gradita, io per una mia dimenticanza con la Tre ci ho già rimesso 150 euro...

Tole ha detto...

qui potete trovare una prima release:

http://forum.ubuntu-it.org/index.php/topic,267277.0.html

LT ha detto...

Ciao a tutti,
volevo segnalarvi un semplice programma grafico per linux per controllare il traffico dati, con auto-sconnessione ed integrato con il NetworkManager.
Qui c’è la discussione: http://forum.ubuntu-it.org/index.php/topic,302134.0.html

NK ha detto...

http://forum.ubuntu-it.org/index.php/topic,302134.0.html

Anonimo ha detto...

stò impostando una connessione su un portatile con la chiavetta della tre momo md, per navigare con l'opzione in oggetto. La configurazione è abbastanza semplice ed ho già navigato. Il problema è come sapete che se non navighi sotto copertura umts son dolori, come faccio con mandriva ad impostare la navigazione esclusivamente sotto rete tre o almeno a controllarla.
ciao e grazie