Daniels Blog
27Mai/080

Linux Kostenzähler für UMTS-Verbindungen

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

hat dir dieser Artikel gefallen?

Dann abonniere doch diesen Blog per RSS Feed!

Kommentare (0) Trackbacks (0)

Zu diesem Artikel wurden noch keine Kommentare geschrieben.


Leave a comment

Noch keine Trackbacks.