LinuxCore
New Member
Non Connesso
Sesso: 
Messaggi: 76
Media messaggi
Sardubuntu DOC
|
 |
« inserita: 25 Gennaio, 2007, 02:32:53 » |
|
Salve  Vorrei esporre alla community un problema oramai noto a tutti quelli che come me hanno le promozioni internet a traffico dati limitati giornalmente. E' da 5 mesi a questa parte che ho l'abbonamento INTERNET UMTS da 30€ mensili della Omnitel, che offre un traffico dati di 1.50GB mensili, suddivisi in 50MB giornalieri. Viste le mie varie esperienze nel campo, in quanto è da 4 anni che navigo su internet utilizzando il cellulare, ho avuto modo di provare le diverse promo in circolazione con diversi operatori, ritengo quindi che questa della omnitel, al momento sia una delle migliori in assoluto. Arrivo al punto; mi è capitato diverse volte di star connesso per ore, di scaricare e nel mentre navigare, ma non sempre mi rendo conto, se non andando ogni tanto nel sito della Omnitel o chiamando il centro servizi che comunica il traffico dati giornaliero disponibile e quello rimanente, di incorrere ad uno scalo di credito una volta superati i 50MB a disposizione, passando quindi alla modalità a tariffazione. Sarebbe quindi cosa buona che la Omnitel stessa impostasse nei server un modo in cui, alla soglia dei 50MB raggiunti vieni disconnesso, dando poi la possibilità all'utente stesso di decidere se usufruire del traffico internet a tariffa o meno. Ora.. la Omnitel stessa mi ha comunicato che attualmente questa opzione non è disponibile, ma che successivamente sarà prensa in considerazione. Ci pensavo da un paio di settimane e mi chiedevo, sarebbe possibile creare uno script in bash o comuque un programma che controlli i dati ricevuti, e che arrivati alla soglia dei 50MB disconnetta il programma di connessione, inviando poi all'utente un msg di pop-up con scritto " Traffico PROMOZIONALE Esaurito". Non sono abbastanza esperto di bash o comuque di programmazione per poter creare una cosa simile, ma credo sia fattibile come cosa. Sarebbe un utility che verrebbe utilizzata da svariati utenti, e che eviterebbe BATTOSTE sul credito a disposizione. Spero che la mia richiesta venga presa in considerazione, in quanto risolverebbe un grosso problemone a chi utilizza le promozioni a traffico dati limitato. grazie in anticipo 
|
|
|
|
« Ultima modifica: 25 Gennaio, 2007, 02:36:46 da LinuxCore »
|
Registrato
|
Powered by Sony Vaio Fe28H + Ubuntu Gutsy + Compiz Fusion 6
|
|
|
paper0k
*Gruppo di continuità*
Moderatore Globale
Hero Member
   
Non Connesso
Sesso: 
Messaggi: 5.871
Media messaggi
~ In GNU We Trust ~
|
 |
« Risposta #1 inserita: 25 Gennaio, 2007, 09:13:36 » |
|
Lo script si può fare certo, il problema è l'attendibilità dei dati, cioè il sistema tramite il file /proc/net/dev dice, interfaccia per interfaccia, ti informa di quanti bytes sono stati scaricati ed inviati. Se il collegamento ha una durata giornaliera (e non ci sono mai cadute di linea) il valore presente li è sempre il numero totale di bytes scambiati Ma se cade la linea, o ti scolleghi/ricolleghi in un secondo momento, questo valore viene azzerato, quindi lo script non lo deve prendere il considerazione come reale, ma come step di un successivo collegamento, quindi lo deve sommare al precedente valore giornaliero. Se succede una volta forse un modo si può trovare... Ma se ci sono molte di queste interruzioni? .... Se si trova un modo che capire se si tratta di un valore reale o di uno step, mi dai 15 minuti e lo script è fatto 
|
|
|
|
|
Registrato
|
|
|
|
paper0k
*Gruppo di continuità*
Moderatore Globale
Hero Member
   
Non Connesso
Sesso: 
Messaggi: 5871
Media messaggi
~ In GNU We Trust ~
|
 |
« Risposta #2 inserita: 25 Gennaio, 2007, 09:46:36 » |
|
Forse un modo l'ho trovato  Questo il codice: #! /bin/bash
# Da personalizzare WRKDIR="./" IFACE="eth1" SCAN="5" WARNING_THRESHOLD=100 CRITICAL_THRESHOLD=200
FSTAT="${WRKDIR}/stat_iface"
while true do # Controllo ultimo valore dei bytes movimentati sull'interfaccia NOW=$(date +"%Y%m%d") B_OLD=$(grep "^${NOW}" ${FSTAT} 2>/dev/null |awk '{ a=$2 } END {if (a!="") print a; else print 0 }') B_PRV=$(grep "^${NOW}" ${FSTAT} 2>/dev/null |awk '{ a=$3 } END {if (a!="") print a; else print 0 }')
# Controllo il nuovo valore B_ACT=$(grep "${IFACE}:" /proc/net/dev|awk '{ a=0; a=$2+$10} END {if (a!="") print a; else print 0 }' ) echo "byte check... old=${B_OLD} act=${B_ACT} prv=${B_PRV}" # legenda: # B_OLD - Precedente somma bytes # B_PRV - Bytes della precedente scansione # B_ACT - Bytes della scansione attuale # B_STEP - Bytes da sommare alla somma precedente # B_NEW - Nuova somma bytes # Controlla incremento if (( B_PRV < B_ACT )) then # Assumo sia un incremento di bytes (( B_STEP = B_ACT - B_PRV )) echo "inc..." else if (( B_PRV != B_ACT )) then # Assumo sia caduta la linea o sia # una nuova connessione quindi devo # sommare i due valori (B_ACT-B_PRV) B_STEP=$B_ACT echo "riazzerato!" else # Nessun byte B_STEP=0 fi fi (( B_NEW = B_OLD + B_STEP )) # Aggiorno file statistico echo "${NOW} ${B_NEW} ${B_ACT}" > $FSTAT
# Controlla soglie if (( B_NEW > CRITICAL_THRESHOLD )) then zenity --title "ifCheck" --error --text "Soglia critica su interfaccia ${IFACE}. Bytes scaricati ${B_NEW}" & else if (( B_NEW > WARNING_THRESHOLD )) then zenity --title "ifCheck" --info --text "Attensione su interfaccia ${IFACE} sono stati scaricati ${B_NEW} bytes" & fi fi
sleep $SCAN done
ovviamente ci sono dei parametri da personalizzare 
|
|
|
|
|
Registrato
|
|
|
|
|
Divilinux
Utente non iscritto
|
 |
« Risposta #3 inserita: 25 Gennaio, 2007, 09:46:45 » |
|
io ho creato un utility per umts http://www.kde-apps.org/content/show.php?content=47252e il discorso del pop-up,meglio chiamarla kdialog,al raggiungimento di un certo traffico dati...e' fattibile..anzi mi hai dato un idea per migliorarlo 
|
|
|
|
|
Registrato
|
|
|
|
paper0k
*Gruppo di continuità*
Moderatore Globale
Hero Member
   
Non Connesso
Sesso: 
Messaggi: 5871
Media messaggi
~ In GNU We Trust ~
|
 |
« Risposta #4 inserita: 25 Gennaio, 2007, 09:56:36 » |
|
Grande Divilinux  tu per KDE io per GNOME 
|
|
|
|
|
Registrato
|
|
|
|
|
Divilinux
Utente non iscritto
|
 |
« Risposta #5 inserita: 25 Gennaio, 2007, 10:03:35 » |
|
senti siccome in k-umts ,i dati relativi ai bytes in entrata/uscita non sono in polling.. lo script che hai postato prima potrebbe fare al caso mio? se si stasera me lo adatto un po' e poi ti cito come co-autore..lol
|
|
|
|
|
Registrato
|
|
|
|
|
AleXit
|
 |
« Risposta #6 inserita: 25 Gennaio, 2007, 10:49:34 » |
|
Grandi ragazzi !! 
|
|
|
|
|
Registrato
|
|
|
|
paper0k
*Gruppo di continuità*
Moderatore Globale
Hero Member
   
Non Connesso
Sesso: 
Messaggi: 5871
Media messaggi
~ In GNU We Trust ~
|
 |
« Risposta #7 inserita: 25 Gennaio, 2007, 11:21:27 » |
|
senti siccome in k-umts ,i dati relativi ai bytes in entrata/uscita non sono in polling.. lo script che hai postato prima potrebbe fare al caso mio? se si stasera me lo adatto un po' e poi ti cito come co-autore..lol
Si penso di si 
|
|
|
|
|
Registrato
|
|
|
|
LinuxCore
New Member
Non Connesso
Sesso: 
Messaggi: 76
Media messaggi
Sardubuntu DOC
|
 |
« Risposta #8 inserita: 26 Gennaio, 2007, 00:28:48 » |
|
Lo script si può fare certo, il problema è l'attendibilità dei dati, cioè il sistema tramite il file /proc/net/dev dice, interfaccia per interfaccia, ti informa di quanti bytes sono stati scaricati ed inviati. Se il collegamento ha una durata giornaliera (e non ci sono mai cadute di linea) il valore presente li è sempre il numero totale di bytes scambiati Ma se cade la linea, o ti scolleghi/ricolleghi in un secondo momento, questo valore viene azzerato, quindi lo script non lo deve prendere il considerazione come reale, ma come step di un successivo collegamento, quindi lo deve sommare al precedente valore giornaliero. Se succede una volta forse un modo si può trovare... Ma se ci sono molte di queste interruzioni? .... Se si trova un modo che capire se si tratta di un valore reale o di uno step, mi dai 15 minuti e lo script è fatto  Son contento che la mia richiesta sia stata presa in considerazione e che siate già a lavoro! Il tuo discorso papper non fà una piega, infatti a ogni disconnessione e riconnessione deve tener conto del traffico dati effettuato giornalmente. Piuttosto come applicare questo script? lo si avvia e gira in backgroud?
|
|
|
|
|
Registrato
|
Powered by Sony Vaio Fe28H + Ubuntu Gutsy + Compiz Fusion 6
|
|
|
paper0k
*Gruppo di continuità*
Moderatore Globale
Hero Member
   
Non Connesso
Sesso: 
Messaggi: 5871
Media messaggi
~ In GNU We Trust ~
|
 |
« Risposta #9 inserita: 26 Gennaio, 2007, 00:32:15 » |
|
Per prima cosa lo devi personalizzare impostando i parametri iniziali, poi con "chmod +x" gli dai i permessi e lo lanci da terminale, controlla il collegamento e ti dice a video l'andamento, ed eventualmente ti avvisa se superi la soglia di warning/critical Poi in caso lo rendiamo più user-friendly 
|
|
|
|
|
Registrato
|
|
|
|
LinuxCore
New Member
Non Connesso
Sesso: 
Messaggi: 76
Media messaggi
Sardubuntu DOC
|
 |
« Risposta #10 inserita: 26 Gennaio, 2007, 00:39:43 » |
|
#! /bin/bash
# Da personalizzare WRKDIR="./" IFACE="eth1" SCAN="5" WARNING_THRESHOLD=100 CRITICAL_THRESHOLD=200
Intendi queste opzioni quà? La descrizione delle opzioni sarebbe: IFACE = Interfaccia di connessione SCAN = Tempo di controllo sulla connessione? WARNING_THRESHOLD = valore (in byte o mb?) che avvisa quando siamo vicini alla soglia CRITICAL_THRESHOLD = valore che avvisa quando siamo al limite giusto? Piuttusto non saprei quale directory impostare su WRKDIR, è la directory dove redirecta l'output su file? Dopo aver raggiunto il valore impostato su CRITICAL_THRESHOLD disconnette il programma di connessione con relativo messaggio di avviso? Il programma di Divilinux non è male, direi che se integrassimo la mia idea e lo sviluppo dello script di paper0k, verebbe fuori una bella utility per chi utilizza questo tipo di connessioni. Piuttosto Divilinux, dovresti dar modo di poterlo utilizzare oltre wvdial.. Premetto che per poter utilizzare lo script bisogna installare dai repository di Ubuntu zenity, il programma di notifica. sudo apt-get install zenity Comuque siamo veramente una grande community! W UBUNTU ITALIA 
|
|
|
|
« Ultima modifica: 26 Gennaio, 2007, 01:13:46 da LinuxCore »
|
Registrato
|
Powered by Sony Vaio Fe28H + Ubuntu Gutsy + Compiz Fusion 6
|
|
|
paper0k
*Gruppo di continuità*
Moderatore Globale
Hero Member
   
Non Connesso
Sesso: 
Messaggi: 5871
Media messaggi
~ In GNU We Trust ~
|
 |
« Risposta #11 inserita: 26 Gennaio, 2007, 08:00:21 » |
|
Intendi queste opzioni quà?
La descrizione delle opzioni sarebbe:
IFACE = Interfaccia di connessione SCAN = Tempo di controllo sulla connessione? WARNING_THRESHOLD = valore (in byte o mb?) che avvisa quando siamo vicini alla soglia CRITICAL_THRESHOLD = valore che avvisa quando siamo al limite giusto?
Si queste opzioni SCAN è il tempo di scansione, penso lo puoi lasciare così, i valori sono in bytes Piuttusto non saprei quale directory impostare su WRKDIR, è la directory dove redirecta l'output su file?
Puoi anche lasciate così, ma sarebbe meglio fare: mkdir $HOME/tmp ed impostare la variabile nello script WRKDIR=$HOME/tmp/ Dopo aver raggiunto il valore impostato su CRITICAL_THRESHOLD disconnette il programma di connessione con relativo messaggio di avviso?
no, ma se l'operazione non richiede privilegi di root si può includere  Comuque siamo veramente una grande community!

|
|
|
|
|
Registrato
|
|
|
|
LinuxCore
New Member
Non Connesso
Sesso: 
Messaggi: 76
Media messaggi
Sardubuntu DOC
|
 |
« Risposta #12 inserita: 26 Gennaio, 2007, 17:01:31 » |
|
Dopo aver raggiunto il valore impostato su CRITICAL_THRESHOLD disconnette il programma di connessione con relativo messaggio di avviso?
no, ma se l'operazione non richiede privilegi di root si può includere  Benissimo, che mi risulti non servono dei privilegi da root per disconnettere la connessione. Sai cosa potresti fare? implementare, dopo aver raggiunto il valore di CRITICAL_THRESHOLD, ti richiede conferma della disconnessione tipo: " Il tuo traffico disponibile dalla PROMO è stato raggiunto, vuoi disconnetterti?" e come opzioni OK o ANNULLA. 
|
|
|
|
|
Registrato
|
Powered by Sony Vaio Fe28H + Ubuntu Gutsy + Compiz Fusion 6
|
|
|
|
Divilinux
Utente non iscritto
|
 |
« Risposta #13 inserita: 26 Gennaio, 2007, 18:58:09 » |
|
lo script di paper0k funziona  ora bisogna rendere il tutto un po' piu' "visibile"..bisogna realizzare un contatore dove si vedono solo i numeri..lol per chi lo volesse testare: kumts_rc1.kmdr.tar.bz2si potrebbe anche creare uno script di installazione..
|
|
|
|
« Ultima modifica: 26 Gennaio, 2007, 19:22:45 da Divilinux »
|
Registrato
|
|
|
|
paper0k
*Gruppo di continuità*
Moderatore Globale
Hero Member
   
Non Connesso
Sesso: 
Messaggi: 5871
Media messaggi
~ In GNU We Trust ~
|
 |
« Risposta #14 inserita: 26 Gennaio, 2007, 19:57:47 » |
|
lo script di paper0k funziona
Dubutavi?!?! 
|
|
|
|
|
Registrato
|
|
|
|
|
Divilinux
Utente non iscritto
|
 |
« Risposta #15 inserita: 26 Gennaio, 2007, 20:01:52 » |
|
hghg  mi spieghi come funziona lo zenity? intanto aggiorno k-umts  mi sono scordato la sogliaaa!! cosi' rimane fissa.. ------------UPGRADE-------- Ci sto lavorando..ora ho inserito la soglia regolabile dall'interfaccia e ho installato zenity..quindi funzionano anche i messaggi di treshold warning una cosa..dato che parliamo di bytes..e' un po' scomodo impostare 10000000bytes come soglia..meglio fare tutto in kb o meglio ancora in MB
|
|
|
|
« Ultima modifica: 27 Gennaio, 2007, 10:55:21 da Divilinux »
|
Registrato
|
|
|
|
paper0k
*Gruppo di continuità*
Moderatore Globale
Hero Member
   
Non Connesso
Sesso: 
Messaggi: 5871
Media messaggi
~ In GNU We Trust ~
|
 |
« Risposta #16 inserita: 26 Gennaio, 2007, 23:05:25 » |
|
Sai cosa potresti fare? implementare, dopo aver raggiunto il valore di CRITICAL_THRESHOLD, ti richiede conferma della disconnessione tipo: " Il tuo traffico disponibile dalla PROMO è stato raggiunto, vuoi disconnetterti?" e come opzioni OK o ANNULLA.  + ..dato che parliamo di bytes..e' un po' scomodo impostare 10000000bytes come soglia..meglio fare tutto in kb o meglio ancora in MB
Accontentati entrambi  Ecco il nuovo script: #! /bin/bash
WRKDIR="./" IFACE="eth1" SCAN="5" # Comando per fermare il collegamento STOP_IFACE="poff provider" # Le soglie sono espresse in Mb WARNING_THRESHOLD=3 CRITICAL_THRESHOLD=3
(( W_THRESHOLD = WARNING_THRESHOLD * 1024 * 1024 )) (( C_THRESHOLD = CRITICAL_THRESHOLD * 1024 * 1024 ))
FSTAT="${WRKDIR}/stat_iface"
while true do # Controllo ultimo valore dei bytes movimentati sull'interfaccia NOW=$(date +"%Y%m%d") B_OLD=$(grep "^${NOW}" ${FSTAT} 2>/dev/null |awk '{ a=$2 } END {if (a!="") print a; else print 0 }') B_PRV=$(grep "^${NOW}" ${FSTAT} 2>/dev/null |awk '{ a=$3 } END {if (a!="") print a; else print 0 }') B_WAR=$(grep "^${NOW}" ${FSTAT} 2>/dev/null |awk '{ a=$4 } END {if (a!="") print a; else print 0 }')
# Controllo il nuovo valore B_ACT=$(grep "${IFACE}:" /proc/net/dev|awk '{ a=0; a=$2+$10} END {if (a!="") print a; else print 0 }' ) echo "byte check... old=${B_OLD} act=${B_ACT} prv=${B_PRV} warning=${B_WAR}" # legenda: # B_OLD - Precedente somma bytes # B_PRV - Bytes della precedente scansione # B_ACT - Bytes della scansione attuale # B_STEP - Bytes da sommare alla somma precedente # B_NEW - Nuova somma bytes # Controlla incremento if (( B_PRV < B_ACT )) then # Assumo sia un incremento di bytes (( B_STEP = B_ACT - B_PRV )) echo "inc..." else if (( B_PRV != B_ACT )) then # Assumo sia caduta la linea o sia # una nuova connessione quindi devo # sommare i due valori (B_ACT-B_PRV) B_STEP=$B_ACT echo "riazzerato!" else # Nessun byte B_STEP=0 fi fi (( B_NEW = B_OLD + B_STEP ))
# Controlla soglie if (( B_NEW > C_THRESHOLD )) then #zenity --title "ifCheck" --error --text "Soglia critica su interfaccia ${IFACE}. Bytes scaricati ${B_NEW}" & if zenity --question --text "Soglia critica su interfaccia ${IFACE}. Bytes scaricati ${B_NEW}. Vuoi interrompere il collegamento?" --title "ifCheck" then $STOP_IFACE fi else if (( B_NEW > W_THRESHOLD )) then if (( B_WAR == 0 )) then zenity --title "ifCheck" --info --text "Attensione su interfaccia ${IFACE} sono stati scaricati ${B_NEW} bytes" & B_WAR="1" fi fi fi
# Aggiorno file statistico echo "${NOW} ${B_NEW} ${B_ACT} ${B_WAR}" > $FSTAT
sleep $SCAN done
Le soglie ora sono in Mb, inoltre in STOP_IFACE occorre inserire il comando per interrompere il collegamento 
|
|
|
|
|
Registrato
|
|
|
|
|
Divilinux
Utente non iscritto
|
 |
« Risposta #17 inserita: 27 Gennaio, 2007, 01:27:35 » |
|
stasera sono cotto..ma domani lo ri-adatto al max lo spinbox mi accetta 1 miliardo di bytes..cioe' ad occhio e croce 1GB... speriamo che cosi' sia un po' + pratico  ps. cosa intendi per inserire il comando?..si puo' fare da una dialog? intanto questo e' il programma aggiornato (ho dovuto aggiungere un tab per questioni di spazio) 
|
|
|
|
« Ultima modifica: 27 Gennaio, 2007, 10:54:57 da Divilinux »
|
Registrato
|
|
|
|
LinuxCore
New Member
Non Connesso
Sesso: 
Messaggi: 76
Media messaggi
Sardubuntu DOC
|
 |
« Risposta #18 inserita: 29 Gennaio, 2007, 01:16:42 » |
|
ragazzi, un grazie mille a entrambi per il supporto che state fornendo alla community e alla mia richiesta! Sta venendo fuori un bllo script da parte di paper0k e un bel programma da parte di divilinux! L'unico modo che ho trovato per aiutarvi e fornirvi solo un supporto tecnico, perchè pratico/programmazione non saprei dove metter le mani, ma pian piano sto imparando bash pure io, tempo al tempo! PS: scusa divi per l'altro ieri, ma la mia soglia era arrivata al limite e non avendo attivo lo script mi si è ciulato il mondo  ! Posso aggiungerti hai miei contatti di msn? Sto cercando di capire che commando impostare per effetture la disconnessione... sarebbe pppd....  hai prossimi aggiornamenti!
|
|
|
|
|
Registrato
|
Powered by Sony Vaio Fe28H + Ubuntu Gutsy + Compiz Fusion 6
|
|
|
paper0k
*Gruppo di continuità*
Moderatore Globale
Hero Member
   
Non Connesso
Sesso: 
Messaggi: 5871
Media messaggi
~ In GNU We Trust ~
|
 |
« Risposta #19 inserita: 29 Gennaio, 2007, 08:10:51 » |
|
Sto cercando di capire che commando impostare per effetture la disconnessione... sarebbe pppd....  hai prossimi aggiornamenti! Dovrebbe essere poff nome_provider dove il nome è reperibile in ls /etc/ppp/peers/ 
|
|
|
|
|
Registrato
|
|
|
|
|