工具运行效果如下:
#iftop eth0 1 3
ifname in_bytes/s out_bytes/s total_bytes/s
eth0 446 418 864
eth0 70 182 252
eth0 70 182 252
脚本内容如下:
------------------------------------------------------------------------
#!/bin/bash
# #### 2012.10.22 monitor the interface network traffic.
if [ $# -ne 3 ];then
echo example: ntop eth0 1 10
exit
fi
eth=$1
count=$3
interval=$2
infirst=$(cat /proc/net/dev |tr ':' ' '|awk '/'$eth'/{print $2}')
if [ -z "$infirst" ];then
echo The network interface $eth is not exits!
exit 1;
fi
outfirst=$(cat /proc/net/dev |tr ':' ' '|awk '/'$eth'/{print $10}')
echo "ifname" "in_bytes/s" "out_bytes/s" "total_bytes/s" |awk '{printf("%10s %16s %16s %16s\n",$1,$2,$3,$4)}'
sleep $interval"s"
i=0
while [ "$i" -lt "$count" ]
do
inend=$(cat /proc/net/dev |tr ':' ' '|awk '/'$eth'/{print $2}')
outend=$(cat /proc/net/dev |tr ':' ' '|awk '/'$eth'/{print $10}')
sumin=$((($inend-$infirst)/$interval))
sumout=$((($outend-$outfirst)/$interval))
sum=$(($sumin+$sumout))
echo $eth $sumin $sumout $sum |awk '{printf("%10s %16s %16s %16s\n",$1,$2,$3,$4)}'
infirst=$inend
outfirst=$outend
i=$(($i+1))
sleep $interval"s"
done
------------------------------------------------------------------------