shell小脚本--网速监控

时间:2021-05-22 08:52:42

  在windows中,我们可以在360等管家软件中显示网速,在linux下想要查看实时的网速怎么办呢?当然在linux下也有很多优秀的软件可以实时显示网络状况!但是在这里我们使用shell脚本来先完成网络上传与下载流量的实时显示:

  思路:  

    在执行ifconfig查看网卡信息的时候,可以看到以下内容:

$ ifconfig  wlp2s0 
wlp2s0: flags
=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet
192.168.0.101 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::a67b:d8cd:4fab:56bb prefixlen
64 scopeid 0x20<link>
ether b8:ee:
65:1f:a0:d7 txqueuelen 1000 (以太网)
RX packets
172968 bytes 211898232 (211.8 MB)
RX errors
0 dropped 0 overruns 0 frame 0
TX packets
125730 bytes 13891021 (13.8 MB)
TX errors
0 dropped 0 overruns 0 carrier 0 collisions 0

    这里有一些字段,字段详细的内容 可以百度搜索。在这里我们用到RX与TX字段里的bytes值。

    RX:接收的

    TX:上传的

版本一:

#!/bin/bash
# version 1  2017-08-14

while
true do
#记录初始bytes数目
down_speed_old
=`ifconfig wlp2s0 | sed -n 's/RX.*bytes \([0-9]\+\).*/\1/p'`
up_speed_old
=`ifconfig wlp2s0 | sed -n 's/TX.*bytes \([0-9]\+\).*/\1/p'`

sleep 1

#保存最新的bytes数目
down_speed_now
=`ifconfig wlp2s0 | sed -n 's/RX.*bytes \([0-9]\+\).*/\1/p'`
up_speed_now
=`ifconfig wlp2s0 | sed -n 's/TX.*bytes \([0-9]\+\).*/\1/p'`

#计算下行与上行的网速
down_speed
=`echo "($down_speed_now-$down_speed_old)/1024"|bc`
up_speed
=`echo "($up_speed_now-$up_speed_old)/1024"|bc`


echo -e "speed : \n\tDN : $[(($down_speed_now-$down_speed_old))] B/s \t $down_speed KB/s"
echo -e "\tUP : $[(($up_speed_now-$up_speed_old))] B/s \t $up_speed KB/s"
done

  运行效果:

$ ./netspeed.sh 
speed :
DN :
81894 B/s 79 KB/s
UP :
13425 B/s 13 KB/s
speed :
DN :
2209563 B/s 2157 KB/s
UP :
184518 B/s 180 KB/s
speed :
DN :
580299 B/s 566 KB/s
UP :
49619 B/s 48 KB/s
speed :
DN :
472 B/s 0 KB/s
UP :
164 B/s 0 KB/s
speed :
DN :
432 B/s 0 KB/s
UP :
594 B/s 0 KB/s
speed :
DN :
162 B/s 0 KB/s
UP :
328 B/s 0 KB/s

TODO:


版本二: