Ich habe ein kleines Script geschrieben um den Traffic bei UMTS/GPRS-Verbindungen mitzuzählen und die entstandenen Kosten zu berechen. Ich brauche es, da ich plane bald mit einer ALDI-Talk Prepaid-Karte zu surfen, da die Preise in meinem regulären Vertrag zu hoch sind. (ALDI: 0,24€ pro Megabyte / E-PLUS-BASE 6,14€ !!!!!)
Am Besten packt man es an das Ende seines Einwahlskriptes, so dass es sofort nach dem Verbindungsaufbau beginnt mitzuzählen.
Alles ohne Gewähr…. weiss nicht ob es verbugt ist oder so, also Benutzung auf eigene Gefahr Bei mir mit BASE könnte das sehr teuer werden, also Vorsicht!
#!/bin/bash # trafficcount - Zeigt Trafficdaten für die aktuelle Verbindung an und # erechnet Kosten für die Verbindung # CONFIG: # Netzwerkkarte der Verbindung INTERFACE=eth0 # Kosten pro 1 MB Traffic PREIS_PRO_MB=0.24 # Updateinterval in Sek UPDATEINTERVAL=5 ############################################ # Errechnet MB aus Byte calc_mb() { BYTES=$1 MEGABYTES=`echo "scale=2; $BYTES / 1048576" | bc` #echo "*** $MEGABYTES ***" } # Holt Trafficdaten aus ifconfig get_data() { # RX bytes:3435333852 (3.1 GiB) TX bytes:1233166424 (1.1 GiB) TRAFFICCUT=`ifconfig $INTERFACE | grep "RX bytes"` #Recieved cutten TMP=`echo $TRAFFICCUT | cut -d: -f2` IN=`echo $TMP | cut -d" " -f1` # SENT cutten TMP=`echo $TRAFFICCUT | cut -d: -f3` OUT=`echo $TMP | cut -d" " -f1` # TOTAL ERRECHNEN TOTAL=`echo "$IN + $OUT" | bc` } S_TOTAL=0 S_IN=0 S_OUT=0 get_data START_TOTAL=$TOTAL START_IN=$IN START_OUT=$OUT #echo $START_TOTAL #echo $START_IN #echo $START_OUT clear while [ 1 ] do get_data # Aktuellen Traffic in der Sitzung bestimmen S_TOTAL=`echo "$TOTAL - $START_TOTAL" | bc` #echo "*** S_TOTAL: $S_TOTAL ***" S_IN=`echo "$IN - $START_IN" | bc` S_OUT=`echo "$OUT - $START_OUT" | bc` # in MB umwandeln calc_mb $TOTAL; TOTAL=$MEGABYTES calc_mb $IN; IN=$MEGABYTES calc_mb $OUT; OUT=$MEGABYTES calc_mb $S_OUT; S_OUT=$MEGABYTES calc_mb $S_IN; S_IN=$MEGABYTES calc_mb $S_TOTAL; S_TOTAL=$MEGABYTES # Kosten ermitteln KOSTEN=`echo "scale=2; $S_TOTAL * $PREIS_PRO_MB " | bc` #echo "*** $KOSTEN - $S_TOTAL - $PREIS_PRO_MB***" # Sitzungsdaten updaten #echo $TRAFFICCUT #echo echo "GESAMT an $INTERFACE: In: $IN MB | Out: $OUT MB | Total: $TOTAL MB " echo "SITZUNG an $INTERFACE: In: $S_IN MB | Out: $S_OUT MB | Total: $S_TOTAL MB " echo "KOSTEN: Euro $KOSTEN" sleep $UPDATEINTERVAL clear done