127 lines
2.2 KiB
Bash
127 lines
2.2 KiB
Bash
#!/bin/sh
|
|
|
|
usage(){
|
|
echo "Usage: $0 [-i INTERFACE] [-s INTERVAL] [-c COUNT]"
|
|
echo
|
|
echo "-i INTERFACE"
|
|
echo " The interface to monitor, default is eth0."
|
|
echo "-s INTERVAL"
|
|
echo " The time to wait in seconds between measurements, default is 3 seconds."
|
|
echo "-c COUNT"
|
|
echo " The number of times to measure, default is 10 times."
|
|
exit 3
|
|
}
|
|
|
|
readargs(){
|
|
while [ "$#" -gt 0 ] ; do
|
|
case "$1" in
|
|
-i)
|
|
if [ "$2" ] ; then
|
|
interface="$2"
|
|
shift ; shift
|
|
else
|
|
echo "Missing a value for $1."
|
|
echo
|
|
shift
|
|
usage
|
|
fi
|
|
;;
|
|
-s)
|
|
if [ "$2" ] ; then
|
|
sleep="$2"
|
|
shift ; shift
|
|
else
|
|
echo "Missing a value for $1."
|
|
echo
|
|
shift
|
|
usage
|
|
fi
|
|
;;
|
|
-c)
|
|
if [ "$2" ] ; then
|
|
counter="$2"
|
|
shift ; shift
|
|
else
|
|
echo "Missing a value for $1."
|
|
echo
|
|
shift
|
|
usage
|
|
fi
|
|
;;
|
|
*)
|
|
echo "Unknown option $1."
|
|
echo
|
|
shift
|
|
usage
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
checkargs(){
|
|
if [ ! "$interface" ] ; then
|
|
interface="eth0"
|
|
fi
|
|
if [ ! "$sleep" ] ; then
|
|
sleep="3"
|
|
fi
|
|
if [ ! "$counter" ] ; then
|
|
counter="10"
|
|
fi
|
|
}
|
|
|
|
printrxbytes(){
|
|
/sbin/ifconfig "$interface" | grep "RX bytes" | cut -d: -f2 | awk '{ print $1 }'
|
|
}
|
|
|
|
printtxbytes(){
|
|
/sbin/ifconfig "$interface" | grep "TX bytes" | cut -d: -f3 | awk '{ print $1 }'
|
|
}
|
|
|
|
bytestohumanreadable(){
|
|
multiplier="0"
|
|
number="$1"
|
|
while [ "$number" -ge 1024 ] ; do
|
|
multiplier=$(($multiplier+1))
|
|
number=$(($number/1024))
|
|
done
|
|
case "$multiplier" in
|
|
1)
|
|
echo "$number Kb"
|
|
;;
|
|
2)
|
|
echo "$number Mb"
|
|
;;
|
|
3)
|
|
echo "$number Gb"
|
|
;;
|
|
4)
|
|
echo "$number Tb"
|
|
;;
|
|
*)
|
|
echo "$1 b"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
printresults(){
|
|
while [ "$counter" -ge 0 ] ; do
|
|
counter=$(($counter - 1))
|
|
if [ "$rxbytes" ] ; then
|
|
oldrxbytes="$rxbytes"
|
|
oldtxbytes="$txbytes"
|
|
fi
|
|
rxbytes=$(printrxbytes)
|
|
txbytes=$(printtxbytes)
|
|
if [ "$oldrxbytes" -a "$rxbytes" -a "$oldtxbytes" -a "$txbytes" ] ; then
|
|
echo "RXbytes = $(bytestohumanreadable $(($rxbytes - $oldrxbytes))) TXbytes = $(bytestohumanreadable $(($txbytes - $oldtxbytes)))"
|
|
else
|
|
echo "Monitoring $interface every $sleep seconds. (RXbyte total = $(bytestohumanreadable $rxbytes) TXbytes total = $(bytestohumanreadable $txbytes))"
|
|
fi
|
|
sleep "$sleep"
|
|
done
|
|
}
|
|
|
|
readargs "$@"
|
|
checkargs
|
|
printresults |