Aggancia questa barra allo schermo |  Disattiva gli effetti grafici


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. script

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 121 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 128 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:

/percorso/completo/killpppd.sh 50

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.


Scritto da: Andrea Peluso (sya54M), . Aggiornato: .

Commenti

Nessun commento.

I campi contrassegnati con * sono obbligatori.

Condividi sui tuoi social preferiti!

Facebook Linkedin Twitter Google+
.