在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 : DN : $[(($down_speed_now-$down_speed_old))] B/s $down_speed KB/s" echo -e " UP : $[(($up_speed_now-$up_speed_old))] B/s $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:
版本二: