Linux下查看网卡流量的工具

工具运行效果如下:
#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

------------------------------------------------------------------------

你可能感兴趣的:(Linux下查看网卡流量的工具)