shell脚本之获取网卡实时流量

最近一直在搞服务器监控系统,分享一下本人采集网卡实时流量的shell 脚本,写得不好的地方还请指出,共同进步一下。

#!/bin/sh
#!/bin/sh
#Collect Network Connection Flow
#version 2.0
#yangqijun 2012
eth=$1
type=$2
if [ $type -eq 1 ]
then
 result=$(ifconfig $eth | grep -e 'RX bytes'|awk '{print $2}'|awk -F':' '{print $2}');
 sleep 5;
 result2=$(ifconfig $eth | grep -e 'RX bytes'|awk '{print $2}'|awk -F':' '{print $2}');
else
  result=0
  result=$(ifconfig $eth | grep -e 'RX bytes'|awk '{print $6}'|awk -F':' '{print $2}');
  sleep 5;
  result2=$(ifconfig $eth | grep -e 'RX bytes'|awk '{print $6}'|awk -F':' '{print $2}');
fi
if [ -z "$result2" ]
then
        result2=0
fi
if [ -z "$result" ]; then
        result=0
fi
if [ $result2 -ge $result ]
then
      diffentvalue=$((($result2-$result)/5));
else
      diffentvalue=$((($result2+4*1024*1024*1024-$result)/5));
fi
diffentvalue=${diffentvalue#-}
if [ $diffentvalue -ge 1073741824 ]
then
     resultend=$(($diffentvalue/1073741824));
     unit=G;
elif [ $diffentvalue -ge 1048576 ]
then
     resultend=$(($diffentvalue/1048576));
     unit=M;
elif [ $diffentvalue -ge 1024 ]
then
     resultend=$(($diffentvalue/1024));
     unit=k;
else
     resultend=$diffentvalue ;
     unit=B;
fi
#echo ${resultend#-}"$unit"
echo $resultend"$unit"


使用方式:

sh /root/monitor_flow eth0 1

1 表示 进流量(RX)

2 表示 出流量 (TX)


以上代码仅供参考。

展开阅读全文

没有更多推荐了,返回首页