2026-03-12 20:23:15
This commit is contained in:
127
vg/network-traffic.sh
Normal file
127
vg/network-traffic.sh
Normal file
@@ -0,0 +1,127 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user