#!/bin/sh
###统计周期内的平均上传下载速度,以Mb为单位
if [ -z "$1" -o -z "$2" ];then
echo -e "\nUsage: $0 <if> <cycle> eg:$0 eth0 5\n"
exit -1
fi
echo -e "\nMonitoring the $1 net flow,press \"ctrl+c\" to stop"
echo ----------------------------------------------------------
while true
do
RX_bytes=`cat /proc/net/dev|grep "$1"|awk '{print $2}'`
TX_bytes=`cat /proc/net/dev|grep "$1"|awk '{print $10}'`
sleep $2
RX_bytes_later=`cat /proc/net/dev|grep "$1"|awk '{print $2}'`
TX_bytes_later=`cat /proc/net/dev|grep "$1"|awk '{print $10}'`
#Mb=B*8/1024/1024
speed_RX=`echo $(expr "scale=2;($RX_bytes_later - $RX_bytes)*8/1024/1024/$2"|bc)`
speed_TX=`echo $(expr "scale=2;($TX_bytes_later - $TX_bytes)*8/1024/1024/$2"|bc)`
printf "Download: %.2f Mb/s\tUpload: %.2f Mb/s\n" $speed_RX $speed_TX
done
使用示例:
./net_flow eth0 5 #监测网卡eth0的速度,每隔5s更新一次数据

本文介绍了一个用于实时监控网络接口上传和下载速度的Shell脚本。该脚本通过读取/proc/net/dev文件来获取指定网络接口的数据传输速率,并以每秒兆位(Mbps)的形式显示出来。用户可以通过传递参数来指定监控的网络接口和刷新间隔。
1万+

被折叠的 条评论
为什么被折叠?



