?#!/bin/bash
# osdba 2008.10.22 monitor the interface's network traffic.
# Zeuslion 2009.08.29.
if [ $# -ne 3 ];then
echo Useage : $0 interface interval count
echo Example: $0 eth0 2 10
exit
fi
eth=$1
count=$3
interval=$2
inbytesfirst=$(cat /proc/net/dev |tr ':' ' '|awk '/'$eth'/{print $2}')
if [ -z "$inbytesfirst" ];then
echo The network interface $eth is not exits!
exit 1;
fi
outbytesfirst=$(cat /proc/net/dev |tr ':' ' '|awk '/'$eth'/{print $10}')
inpacketsfirst=$(cat /proc/net/dev |tr ':' ' '|awk '/'$eth'/{print $3}')
outpacketsfirst=$(cat /proc/net/dev |tr ':' ' '|awk '/'$eth'/{print $11}')
sleep $interval"s"
while [ "1" ]
do
i=0
while [ "$i" -lt "$count" ]
do
inbytesend=$(cat /proc/net/dev |tr ':' ' '|awk '/'$eth'/{print $2}')
outbytesend=$(cat /proc/net/dev |tr ':' ' '|awk '/'$eth'/{print $10}')
inpacketsend=$(cat /proc/net/dev |tr ':' ' '|awk '/'$eth'/{print $3}')
outpacketsend=$(cat /proc/net/dev |tr ':' ' '|awk '/'$eth'/{print $11}')
bytesin=$(($inbytesend-$inbytesfirst))
bytesout=$(($outbytesend-$outbytesfirst))
packetsin=$(($inpacketsend-$inpacketsfirst))
packetsout=$(($outpacketsend-$outpacketsfirst))
if [ "$bytesin" -lt "0" ];then
bytesin=$((4294967295-$inbytesfirst+$inbytesend))
#echo bytesin $bytesin $inbytesfirst $inbytesend
fi
if [ "$bytesout" -lt "0" ];then
bytesout=$((4294967295-$outbytesfirst+$outbytesend))
#echo bytesout $bytesout $outbytesfirst $outbytesend
fi
if [ "$packetsin" -lt "0" ];then
packetsin=$((4294967295-$inpacketsfirst+$inpacketsend))
#echo packetsin $packetsin $inpacketsfirst $inpacketsend
fi
if [ "$packetsout" -lt "0" ];then
packetsout=$((4294967295-$outpacketsfirst+$outpacketsend))
#echo packetsout $packetsout $outpacketsfirst $outpacketsend
fi
bytesin=$(($bytesin/$interval))
bytesout=$(($bytesout/$interval))
packetsin=$(($packetsin/$interval))
packetsout=$(($packetsout/$interval))
sumbytesin=$(($sumbytesin+$bytesin))
sumbytesout=$(($sumbytesout+$bytesout))
sumpacketsin=$(($sumpacketsin+$packetsin))
sumpacketsout=$(($sumpacketsout+$packetsout))
if [ $(($i%20)) -eq 0 ];then
echo "--------- | ---------- ----------- | ----------- ------------ | ------------ -------------"
echo " ifname | in_kbits/s out_kbits/s | in_kBytes/s out_kBytes/s | in_packets/s out_packets/s"
echo "--------- | ---------- ----------- | ----------- ------------ | ------------ -------------"
fi
echo $eth $bytesin $bytesout $packetsin $packetsout |awk '{printf("%9s | %10d %11d | %11d %12d | %12d %13d\n",$1,$2/128,$3/128,$2/1024,$3/1024,$4,$5)}'
inbytesfirst=$inbytesend
outbytesfirst=$outbytesend
inpacketsfirst=$inpacketsend
outpacketsfirst=$outpacketsend
i=$(($i+1))
sleep $interval"s"
done
sumbytesin=$(($sumbytesin/$i))
sumbytesout=$(($sumbytesout/$i))
sumpacketsin=$(($sumpacketsin/$i))
sumpacketsout=$(($sumpacketsout/$i))
echo "--------- | ---------- ----------- | ----------- ------------ | ------------ -------------"
echo Average $sumbytesin $sumbytesout $sumpacketsin $sumpacketsout |awk '{printf("%9s | %10d %11d | %11d %12d | %12d %13d\n",$1,$2/128,$3/128,$2/1024,$3/1024,$4,$5)}'
done
热门文章更多>>
标签更多>>
专题更多>>
最新文章更多>>
- 团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
- 使用 MSBuild.exe 在发布模式下构建 C# 解决方案
- 当我发布 Web 应用程序时,AfterPublish 脚本不运行
- 构建时 T4 转换的产品仅在下一个构建中使用
- ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
- 新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
- 如何将条件编译符号(DefineConstants)传递给 msbuild
- MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
- NuGet 包还原找不到包,没有源
- 使用 C# 6.0 功能运行 TFS 构建
亖呉?盀