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.
salve, oggi, avendomi attivato una promozione della 3 (naviga 3), che con 9 euro al mese si hanno 50MB al giorno di traffico, mi stavo facendo uno script che mi autodisconnettesse al raggiungimento dei 50MB:
#!/bin/bash
# 2009, Andrea Peluso.
DATE=`date +%Y%m%d`
if [ -r /tmp/$DATE/rx_bytes* ]; then
RXBU=`cat /tmp/$DATE/rx_bytes*`
TXBU=`cat /tmp/$DATE/tx_bytes*`
fi
while [ true ]
do
RX=`cat /sys/class/net/ppp0/statistics/rx_bytes`
TX=`cat /sys/class/net/ppp0/statistics/tx_bytes`
if [ -r /tmp/$DATE/rx_bytes* ]; then
BYTETOT=`expr $RX + $TX + $RXBU + $TXBU`
else BYTETOT=`expr $RX + $TX`
fi
echo $BYTETOT
if [ $BYTETOT -ge 52428800 ]; then
cp --backup /sys/class/net/ppp0/statistics/rx_bytes /tmp/$DATE/rx_bytes
cp --backup /sys/class/net/ppp0/statistics/tx_bytes /tmp/$DATE/tx_bytes
sudo killall pppd
exit 0
fi
sleep 5
done
come è evidente però, la mia soluzione è stupida e buggata perchè funziona solo se lo script viene eseguito un massimo di 2 volte al giorno.
mi servirebbe un sugerimento da chi mastica la bash meglio di me.
ps: come si dice a cp di fare i backup numerati invece di usare la ~ ?
grazie infinite per gli eventuali aiuti
Ultima modifica di sya54M il gio 12 feb 2009, 20:15, modificato 1 volta in totale.
Io salverei il contenuto delle variabili "DATE" e "BYTETOT" dentro un file, così all'avvio dello script carichi il contenuto del file e puoi eseguire tutti i controlli del caso (che non sia passato più di un mese e quanti bytes hai già usato).
Ansa89 ha scritto:Io salverei il contenuto delle variabili "DATE" e "BYTETOT" dentro un file, così all'avvio dello script carichi il contenuto del file e puoi eseguire tutti i controlli del caso (che non sia passato più di un mese e quanti bytes hai già usato).
il bonus di 50MB è giornaliero nel senso che se un giorno non vengono usati, sono persi e il giorno dopo non si hanno 100MB ma comunque 50.
però per bytetot penso che sia una buona idea di metterlo in un solo file in modo da non dover copiare tanti file (e crearmi problemi) come volevo fare io, ora provo e poi faccio sapere.
grazie ansa
Non devi creare MOLTI file, te ne basta uno solo (che sovrascriverai fino allo spasmo) dove tieni dentro la data (per sapere se è lo stesso giorno) e i bytes totali usati.
, in questo modo puoi lanciare lo script quante volte ti pare.
Io invece del comando date utilizzerei 'stat' per trovare la data di ultima modifca dei file e, se il file è vecchio lo cancellerei, in questo modo puoi usare un nome univoco da utilizzare tutti i giorni
Ansa89 ha scritto:Non devi creare MOLTI file, te ne basta uno solo (che sovrascriverai fino allo spasmo) dove tieni dentro la data (per sapere se è lo stesso giorno) e i bytes totali usati.
ho preferito usare la data come nome del file in cui scrivo i byte (un file per ogni giorno),
quindi inserendo il simbolo + tra una riga e l'altra funziona.
però mi sono reso conto di un problema di fondo : cioè che il file con i byte in colonna dovrebbe essere scritto alla chiusura della connessione in qualsiasi momento e non solo quando raggiunge i 50mb, altrimenti non serve a nulla