Summierung des Down- und Uploadvolumens
Na, da mach ich doch auch mit. Ich hatte von meinem Provider ein Mail bekommen, dass ich auf mein Downloadverhalten acht geben soll. Bei der Rückfrage wie, hat man mir gesagt, dass Linux von ihnen nicht unterstützt wird. Deshalb mußte ich mir notgedrungen, mit einer super Hilfe von Hans-Georg Normann, selbst ein Script basteln.
Es liegt bei mir in /etc/init.d, und ich führe es beim Starten und Beenden aus. Es handelt sich bei mir um Gentoo-Linux (#!/sbin/runscript).
Code:
#!/sbin/runscript
depend() {
need net
}
start() {
ebegin "Starting SumTraffic "
datum=$(date +%d.%m.%Y)
monat=$(date +%m%Y)
#Überprüfung, ob die datei /var/log/updown existiert, falls nicht = anlegen
if [ ! -f /var/log/updown ] ; then
echo 0 > /var/log/updown
echo die datei /var/log/updown wurde angelegt
fi
#Überprüfung, ob die datei /var/log/monatupdo existiert, falls nicht = anlegen
if [ ! -f /var/log/monatupdo ] ; then
echo $monat > /var/log/monatupdo
echo die datei /var/log/monatupdo wurde angelegt
fi
#Überprüfung des monats
if [ `cat /var/log/monatupdo` != $monat ] ; then
sum=0; for i in `cat /var/log/updown`; do ((sum+=i));done;
mv /var/log/updown /var/log/$datum.UPDOWN
echo 0 > /var/log/updown
echo Die Datei wurde unter dem Namen $datum.UPDOWN weggesichert
echo $datum: Transfervolumen des vergangenen Monats: $sum MB ';)'
#standard
else
sum=0; for i in `cat /var/log/updown`; do ((sum+=i));done;
echo $datum: bisher heruntergeladen: $sum MB. verbleibend: $[10240-$sum] MB
fi
eend $? "Failed to start SumTraffic"
}
stop() {
ebegin "Stopping SumTraffic "
#generelle variablen definieren
datum=$(date +%d.%m.%Y)
monat=$(date +%m%Y)
#Wert für die monatsüberprüfung in textdatei schreiben
echo $monat > /var/log/monatupdo
#up und downloadvolumen ermitteln
up=$(/sbin/ifconfig eth0 | grep "RX bytes" | gawk '{print $6}' | gawk -F':' '{print $2}');up=$[$up/1048576]
down=$(/sbin/ifconfig eth0 | grep "RX bytes" | gawk '{print $2}' | gawk -F':' '{print $2}');down=$[$down/1048576]
#prüfen, ob eventuell die summe von up und download > 0
summe=$[$up+$down]
if [ $summe = 0 ] ; then
up=$(/sbin/ifconfig eth0 | grep "RX bytes" | gawk '{print $6}' | gawk -F':' '{print $2}')
down=$(/sbin/ifconfig eth0 | grep "RX bytes" | gawk '{print $2}' | gawk -F':' '{print $2}')
summe=$[$up+$down];summe=$[$summe / 1048576]
echo $summe >> /var/log/updown
up=0;down=$summe
#falls summe von up und download immer noch < 0 dann 1 mb annehmen
if [ $summe = 0 ] ; then
up=0;down=1
echo $down >> /var/log/updown
fi
#ansonsten die tatsächlichen werte übernehmen
else
echo $down >> /var/log/updown
echo $up >> /var/log/updown
fi
sum=0; for i in `cat /var/log/updown`; do ((sum+=i));done;
#zusammenfassung ausgeben
echo $datum: heute: $[$up+$down] MB insgesamt: $sum MB verbleibend: $[10240-$sum] MB
eend $?
Analog dazu habe ich mir noch ein kleines ausführbares Script gebastelt, welches ich mit fcron im 15 Minuten Takt ausführen lasse. Die Daten werden mittels Root-Tail am Desktop angezeigt:
Code:
datum=$(date +%d.%m.%Y)
up=$(/sbin/ifconfig eth0 | grep "RX bytes" | gawk '{print $6}' | gawk -F':' '{print $2}');up=$[$up/1048576]
down=$(/sbin/ifconfig eth0 | grep "RX bytes" | gawk '{print $2}' | gawk -F':' '{print $2}');down=$[$down/1048576]
sum=0; for i in `cat /var/log/updown`; do ((sum+=i));done;
echo $datum: down: $down MB up: $up MB heute: $[$up+$down] MB >> /var/log/kern.log
echo $datum: insgesamt: $[$sum+$down+$up] MB verbleibend: $[10240-$sum-$down-$up] MB >> /var/log/kern.log
Mir ist klar, dass man die Scripte noch mit Variablen usw. ausschmücken könnte, doch für mich und meinem normalen Hausgebrauch, reichen sie, wie sie sind .. btw, mein Downloadlimit ist 10 GB, deshalb 1048576.
[edit]Ich habe noch eine Überschrift gesetzt und die quotes mit code ersetzt[/edit]
Lesezeichen