R
Ritter
Grünschnabel
Das folgende Script zieht per SNMP accounting Daten vom Router und stellt diese leicht aufbereitet dar. Nun ist der GNU bc mehr als nur ein Rechner, genaugenommen eine Programmiersprache für arithmetische Berechnungen und sollte daher auch mit Potenzen umgehen können. Google'n hat nicht geholfen; ich finde kein Beispiel wie das praktisch aussehen könnte und wollte daher Fragen, ob da jemand eine Idee hat.
#! /bin/bash
case $1 in
d|D ) IFACE=24 ;;
v|V ) IFACE=28 ;;
esac
printf "\n"
IFNAME=`snmpget -v2c -c public 192.168.0.1 IF-MIB::ifDescr.${IFACE} | awk '{printf $4}'`
TRAFFIC=`snmpget -v2c -c public 192.168.0.1 IF-MIB::ifInOctets.${IFACE} | awk '{printf $4}'`
printf "Interface:\t $IFNAME\n"
printf "Bytes:\t\t $TRAFFIC"
Traffic_KByte=$(echo -e "scale=2 ;\n$TRAFFIC/1024 \nquit" | bc -l)
printf "\nKBytes:\t\t $Traffic_KByte"
Traffic_MByte=$(echo -e "scale=2 ;\n$TRAFFIC/1024/1024 \nquit" | bc -l)
printf "\nMBytes:\t\t $Traffic_MByte"
Traffic_GByte=$(echo -e "scale=2 ;\n$TRAFFIC/1024/1024/1024 \nquit" | bc -l)
printf "\nGBytes:\t\t $Traffic_GByte"
printf "\n\n"
Wenn ich nicht ganz falsch liege, sollte statt '1024/1024' auch 2^1024 beziehungsweise statt '1024/1024/1024' auch 3^1024 funktionieren? Wenn ich das aber probiere, erhalte ich als Rückgabe lediglich 0. Oder habe ich einen Denkfehler hinsichtlich Potenzen?
#! /bin/bash
case $1 in
d|D ) IFACE=24 ;;
v|V ) IFACE=28 ;;
esac
printf "\n"
IFNAME=`snmpget -v2c -c public 192.168.0.1 IF-MIB::ifDescr.${IFACE} | awk '{printf $4}'`
TRAFFIC=`snmpget -v2c -c public 192.168.0.1 IF-MIB::ifInOctets.${IFACE} | awk '{printf $4}'`
printf "Interface:\t $IFNAME\n"
printf "Bytes:\t\t $TRAFFIC"
Traffic_KByte=$(echo -e "scale=2 ;\n$TRAFFIC/1024 \nquit" | bc -l)
printf "\nKBytes:\t\t $Traffic_KByte"
Traffic_MByte=$(echo -e "scale=2 ;\n$TRAFFIC/1024/1024 \nquit" | bc -l)
printf "\nMBytes:\t\t $Traffic_MByte"
Traffic_GByte=$(echo -e "scale=2 ;\n$TRAFFIC/1024/1024/1024 \nquit" | bc -l)
printf "\nGBytes:\t\t $Traffic_GByte"
printf "\n\n"
Wenn ich nicht ganz falsch liege, sollte statt '1024/1024' auch 2^1024 beziehungsweise statt '1024/1024/1024' auch 3^1024 funktionieren? Wenn ich das aber probiere, erhalte ich als Rückgabe lediglich 0. Oder habe ich einen Denkfehler hinsichtlich Potenzen?