废话不多说了 ,直接上 脚本 有什么问题 请留言,平台是 centos6.5
#!/bin/sh
# centos6.5
# by tian qq:342388368
if [ "$1" = "" ];then
echo -e "\n use interface_name after the script,like \"script eth0\"...\n"
exit -1
fi
echo -e "\n start monitoring the $1,press \"ctrl+c\" to stop"
echo -----------------------------------------------------------
file=/proc/net/dev
while true
do
RX_bytes=`cat $file|grep $1|sed 's/^ *//g'|awk -F '[ :]+' '{print $2}'` #sed 's/^ *//g' 去掉开头的空格,-F '[ :]+' 用空格或:作为分隔符,这地方可能翻译的不准确
RX_pac=`cat $file|grep $1|sed 's/^ *//g'|awk -F '[ :]+' '{print $3}'`
TX_bytes=`cat $file|grep $1|sed 's/^ *//g'|awk -F '[ :]+' '{print $10}'`
TX_pac=`cat $file|grep $1|sed 's/^ *//g'|awk -F '[ :]+' '{print $11}'`
sleep 3
RX_bytes_later=`cat $file|grep $1|sed 's/^ *//g'|awk -F '[ :]+' '{print $2}'`
RX_pac_later=`cat $file|grep $1|sed 's/^ *//g'|awk -F '[ :]+' '{print $3}'`
TX_bytes_later=`cat $file|grep $1|sed 's/^ *//g'|awk -F '[ :]+' '{print $10}'`
TX_pac_later=`cat $file|grep $1|sed 's/^ *//g'|awk -F '[ :]+' '{print $11}'`
#B*8/1024/1024=Mb
speed_RX=`echo "scale=2;($RX_bytes_later - $RX_bytes)*8/1024/1024/3"|bc` #scale 是保留小数点几位,bc是浮点运算
speed_RX_P=`echo "scale=2;($RX_pac_later - $RX_pac)/1000/3"|bc`
speed_TX=`echo "scale=2;($TX_bytes_later - $TX_bytes)*8/1024/1024/3"|bc`
speed_TX_P=`echo "scale=2;($TX_pac_later - $TX_pac)/1000/3"|bc`
printf "%-3s %-3.2f %-4s %-3.2f %-10s %-4s %-3.2f %-4s %-3.2f %-4s\n" IN: $speed_RX Mb/s $speed_RX_P kp/s OUT: $speed_TX Mb/s $speed_TX_P kp/s # 前面的%-xxs 补习和后面的字段数量一致,默认是空格分段
done