Ich habe mir einen kleinen Traffic-Monitor für awk gebastelt, der aus der ifconfig-Ausgabe verschiedenes berechnet und summiert.
Einen awk (busybox mit awk) gäbe es hier.
Das Skript läuft, bis es mit STRG-C abgebrochen wird.
Das gewünschte Device (default: dsl), die Wartezeit zwischen den ifconfig-Aufrufen (def.: 5 Sek.) und der Pfad zum awk (def.: awk) können angepasst
werden. Device und Wartezeit können auch per Aufruf übergeben werden
(z.B. scriptname dsl 5)
Es werden die Zahlen (Bytes) von der RX.*bytes-Zeile der ifconfig-Ausgabe ermittellt und summiert.
Die angezeigten Zahlen sind in MB.
Dann sollte evtl. der "if ( zeile == 22 )"-Block auskommentiert/gelöscht werden.
Hier das Skript:
(als zip in der Anlage)
EDIT1:
Im Skript also ggf. "AWK" (und "device" und "pause") anpassen.
EDIT2:
Wenn man den Zähler von ifconfig resetten will, dann geht das so (allerdings mit Verbindungstrennung u. -neuaufbau)
(besseren Weg habe ich bisher nicht - hat jemand nen anderen Tip ?):
EDIT3:
Der Zähler wird bei nem bestimmten Wert automatisch wieder auf 0 gesetzt (glaube bei 4 GB), weiss grad nicht, wie sich das Skript dann verhalten würde. Evtl. ist da noch Anpassungsbedarf. Ich resette momentan jede Nacht um 0:00 die Zähler (wie oben), dann sind Zähler=Tagesverbrauch
Einen awk (busybox mit awk) gäbe es hier.
Das Skript läuft, bis es mit STRG-C abgebrochen wird.
Das gewünschte Device (default: dsl), die Wartezeit zwischen den ifconfig-Aufrufen (def.: 5 Sek.) und der Pfad zum awk (def.: awk) können angepasst
werden. Device und Wartezeit können auch per Aufruf übergeben werden
(z.B. scriptname dsl 5)
Es werden die Zahlen (Bytes) von der RX.*bytes-Zeile der ifconfig-Ausgabe ermittellt und summiert.
Die angezeigten Zahlen sind in MB.
- akt.Zaehl.: Summe von RX- u. TX-Bytes
- Neu: neuer Traffic in den letzten x Sekunden
- Ges: Gesamt-Tr. seit Skript-Start
- Minuten: Laufzeit des Skripts
- MB/H/s: berechneter Traffic pro Stunde (Grundlage: Traffic bei Ges.)
- MB/H/a: berechneter Traffic pro Stunde aktuell (Grundlage: Traffic in letzten x Sekunden)
Dann sollte evtl. der "if ( zeile == 22 )"-Block auskommentiert/gelöscht werden.
Hier das Skript:
Code:
#!/bin/sh
AWK="awk"
device="dsl"
pause=5
if [ $# -eq 2 ]; then
device=$1
pause=$2
fi
echo "$device $pause"| $AWK '{
dev=$1
sleep=$2
ges=0
anf=0
zeile=0
start=systime()
cmd="ifconfig "dev"|grep RX.*byt;sleep "sleep
print "akt.Zaehl. Neu Ges Minuten MB/H/S MB/H/a"
while (cmd|getline) {
zeile++
r=substr($2,7)/1024/1024
t=substr($6,7)/1024/1024
s=r+t
now=systime()
secs=now-start
sdiff=secs-secs_alt
if ( anf == 0 ) { alt=s; anf=1 }
d=s-alt
ges=ges+d
alt=s
if ( secs > 0 ) {
phs=(ges/secs)*60*60; pha=(d/sdiff)*60*60
}
printf "%10.3f %10.3f %10.3f %10.2f %10.3f %10.3f\n",
s,d,ges,secs/60,phs,pha
secs_alt=secs
if ( zeile == 22 ) {
zeile=0
print "akt.Zaehl. Neu Ges Minuten MB/H/S MB/H/a"
}
close(cmd) } }'
EDIT1:
Im Skript also ggf. "AWK" (und "device" und "pause") anpassen.
EDIT2:
Wenn man den Zähler von ifconfig resetten will, dann geht das so (allerdings mit Verbindungstrennung u. -neuaufbau)
(besseren Weg habe ich bisher nicht - hat jemand nen anderen Tip ?):
Code:
dsld -s
rmmod kdsldmod
insmod kdsldmod
dsld
Der Zähler wird bei nem bestimmten Wert automatisch wieder auf 0 gesetzt (glaube bei 4 GB), weiss grad nicht, wie sich das Skript dann verhalten würde. Evtl. ist da noch Anpassungsbedarf. Ich resette momentan jede Nacht um 0:00 die Zähler (wie oben), dann sind Zähler=Tagesverbrauch
Anhänge
Zuletzt bearbeitet: