Auto-disconnesione per abbonamenti a volume
Oggi, 12/02/2009, mi sono attivato la promozione "Naviga 3" con la quale si hanno a disposizione 50MB al giorno per 30 giorni.

Com'è intuibile, oltre il raggiungimento dei 50MB verrebbe applicata la normale tariffazione svuotando il credito della sim prima di rendersene conto.
Per ovviare a questo inconveniente, anche grazie all'aiuto degli amici di slacky.eu, ho scritto 2 script, che possono essere sfruttati per esempio con kppp, che killano pppd al raggiungimento dei 50MB:
killpppd.sh
#!/bin/bash
# (C) 2009, Andrea Peluso.
expr $1 \+ 0 1> /dev/null
TEST=$?
if [ $# -ne 1 -o $TEST -ne 0 ]; then
echo -e "Uso: $0 [limite in MB]\n"
echo "Script di auto-disconnessione per abbonamenti a volume."
echo -e "(C) 2009, Andrea Peluso.\n"
exit 1
fi
DATE=$(date +%Y%m%d)
echo $DATE > /tmp/date.tmp
BYTEBU=0
LIM=$(expr $1 \* 1000000)
if [ -r /tmp/$DATE ]; then
BYTEBU=`expr $(cat /tmp/$DATE)`
if [ "$BYTEBU" -ge "$LIM" ]; then
kdialog --warningcontinuecancel "Oggi sono gia' stati consumati $(expr $BYTEBU / 1000000) MB ($(expr $BYTEBU / 1048576) MB).\nVuoi continuare comunque?" --title "KillPPP"
if [ $? = 0 ]; then
exit 0
else sudo killall pppd
fi
fi
kdialog --msgbox "Oggi sono gia' stati consumati $(expr $BYTEBU / 1000000) MB ($(expr $BYTEBU / 1048576) MB).\nTraffico residuo: `expr \( $LIM \- $BYTEBU \) / 1000000` MB (`expr \( $LIM \- $BYTEBU \) / 1048576` MB)." --title "KillPPP" &
fi
while [ true ]
do
RX=`cat /sys/class/net/ppp0/statistics/rx_bytes`
TX=`cat /sys/class/net/ppp0/statistics/tx_bytes`
BYTETOT=$(expr $RX \+ $TX \+ $BYTEBU)
if [ "$BYTETOT" -ge "$LIM" ]; then
echo + >> /tmp/$DATE
cat /sys/class/net/ppp0/statistics/rx_bytes >> /tmp/$DATE
echo + >> /tmp/$DATE
cat /sys/class/net/ppp0/statistics/tx_bytes >> /tmp/$DATE
kdialog --yesno "Sono stati consumati $(expr $BYTETOT / 1000000) MB ($(expr $BYTETOT / 1048576) MB).\nVuoi terminare la connessione?" --title "KillPPP"
if [ $? = 0 ]; then
sudo killall pppd
fi
exit 0
fi
sleep 5
done
Scarica [.sh]
...scaricato 138 volte,
dimensione: 2 KB savebyte.sh
#!/bin/bash
# (C) 2009, Andrea Peluso.
expr $1 \+ 0 1> /dev/null
TEST=$?
if [ $# -ne 1 -o $TEST -ne 0 ]; then
echo -e "Uso: ./killppp.sh [limite in MB]\n"
echo "Script di auto-disconnessione per abbonamenti a volume."
echo -e "(C) 2009, Andrea Peluso.\n"
exit 1
fi
DATE=$(cat /tmp/date.tmp)
BYTEBU=0
LIM=$(expr $1 \* 1000000)
if [ -r /tmp/$DATE ]; then
BYTEBU=`expr $(cat /tmp/$DATE)`
fi
echo + >> /tmp/$DATE
cat /sys/class/net/ppp0/statistics/rx_bytes >> /tmp/$DATE
echo + >> /tmp/$DATE
cat /sys/class/net/ppp0/statistics/tx_bytes >> /tmp/$DATE
RX=$(cat /sys/class/net/ppp0/statistics/rx_bytes)
TX=$(cat /sys/class/net/ppp0/statistics/tx_bytes)
BYTECUR=$(expr $RX \+ $TX)
BYTETOT=$(expr $RX \+ $TX \+ $BYTEBU)
kdialog --msgbox "Sono stati consumati:\n$(expr $BYTECUR / 1000000) MB ($(expr $BYTECUR / 1048576) MB) in questa sessione,\n$(expr $BYTETOT / 1000000) MB ($(expr $BYTETOT / 1048576) MB) in totale nella data odierna,\n`expr \( $LIM \- $BYTETOT \) / 1000000` (`expr \( $LIM \- $BYTETOT \) / 1048576` MB) rimasti." --title "KillPPP" &
rm /tmp/date.tmp
Scarica [.sh]
...scaricato 149 volte,
dimensione: 1 KB Il primo va eseguito subito dopo l'avvenuta connessione e il secondo, subito prima della disconnessione; entrambi col limite del proprio abbonamento espresso in megabyte come opzione.
Per esempio:
e
/percorso/completo/savebyte.sh 50...nel caso si abbiano 50 MB a disposizione.
Ho voluto pubblicarli qui, perché sono sicuro che serviranno a qualcuno.
Condividi sui tuoi social preferiti!
Telegram Facebook Linkedin Twitter Pinterest