shell脚本查看网速(模拟sar -n Dev 1)
shell脚本查看网速(模拟sar -n Dev 1)
2025-12-12
1 获取网卡实时速率/proc/net/dev
# 获取网卡实时速率/proc/net/dev cat /proc/net/dev Inter-face ReceiveBytes packets errs drop fifo frame compressed multicast TransmitBytes packets errs drop fifo colls carrier compressed lo: 12996155386 86290245 0 0 0 0 0 0 12996155386 86290245 0 0 0 0 0 0 eth0: 26746916448 96220272 0 0 0 0 0 0 144910621984 343736979 0 0 0 0 0 0
2 shell 脚本
为了获取速率数据,写了shell脚本
getNetRatio.sh
# 输出header printf "%s %-16s %-16s %-16s %-16s\n" $(date "+%H:%M:%S") "recByte(Kb/s)" "recPack/s" "transByte(Kb/s)" "transPack/s" # 每隔1秒获取一次系统性能数据,持续1分钟 DURATION=$1 # $1 第一个入参 INTERVAL=1 for (( num=0; num<=$DURATION; num+=INTERVAL )) do str=`grep eth0 /proc/net/dev|awk '{printf("%s,%s,%s,%s",$2,$3,$10,$11)}'`; # 将逗号替换为空格 str=${str//,/ } for element in $str; do i=$i+1; if((i==1));then recByteIncr=$[element-recByte] recByte=$element; elif((i==2));then recPackIncr=$[element-recPack] recPack=$element; elif((i==3));then transByteIncr=$[element-transByte] transByte=$element; elif((i==4));then transPackIncr=$[element-transPack] transPack=$element; fi done i=0 if((num>0));then printf "%-10s \033[34m%-16.2f \033[34m%-16d \033[34m%-16.2f \033[34m%-16d\033[0m\n" $(date "+%H:%M:%S") $(echo "$recByteIncr/1024" | bc -l) $recPackIncr $(echo "$transByteIncr/1024" | bc -l) $transPackIncr fi sleep $INTERVAL done echo "数据记录完成。"
3 调用
sh getNetRatio.sh 5
16:24:36 recByte(Kb/s) recPack/s transByte(Kb/s) transPack/s 16:24:37 2.86 48 1.73 29 16:24:38 2.91 49 1.82 30 16:24:39 1.48 25 1.13 18 16:24:40 2.91 49 1.82 30 16:24:41 5.77 97 3.24 54 数据记录完成。

浙公网安备 33010602011771号