加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱故事小小网_铜陵站长网 (http://www.0562zz.com/)- 视频终端、云渲染、应用安全、数据安全、安全管理!
当前位置: 首页 > 教程 > 正文

借助shell网络流量监控

发布时间:2021-12-14 13:14:48 所属栏目:教程 来源:互联网
导读:学习shell告一段落。开始那种信心满满,学过后才知道shell博大精深。学到只是一点皮毛。祖师爷一再教诲:学习这个没有什么窍门。要多练习,要有思路。有了思路,就会有一个解决办法。 今天课堂上讨论了一个练习,如何利用shell每十秒统计一次网络流量? 乍一
学习shell告一段落。开始那种信心满满,学过后才知道shell博大精深。学到只是一点皮毛。祖师爷一再教诲:学习这个没有什么窍门。要多练习,要有思路。有了思路,就会有一个解决办法。
 
今天课堂上讨论了一个练习,如何利用shell每十秒统计一次网络流量?
 
乍一听,统计流量感觉好难,无从下手。但是在老师的指导下,逐渐有了思路。
 
首先要采集到网络流量的数据。有了数据,求出流量差,就是网络流量了。那么数据去哪里找呢?
 
开始学习linux我们经常使用到ifconfig这条命令,来查看那网卡信息,主要是ip地址。其实呢,这信息里面就有通过当前网卡的数据流量。有发出的数据和收到的数据。
 
[root@www ~]# ifconfig eth0
 eth0      Link encap:Ethernet  HWaddr 00:0C:29:2F:59:46
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe2f:5946/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:635 errors:0 dropped:0 overruns:0 frame:0
          TX packets:636 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:62050 (60.5 KiB)  TX bytes:61036 (59.6 KiB)
          Interrupt:59 Base address:0x2024
 
 
那么如何把需要的数据提取出来呢?
 
 [root@www ~]# ifconfig eth0|awk -F ":" 'NR==8{print $2,$3}'
 F=($2+$3)就是在这一时刻,网络流量的总和。
 
间隔十秒在采集一次数据:S=($2+$3)。
 
计算两次采集到的数据差(S-F)就可以得到,这期间的流量。那么要每隔10s采集一次数据,怎么实现呢?这个是作为流量监控,还要不停地循环下去。
 
#!/bin/bash
 
while true;do
 
F=`ifconfig eth0|awk -F ":" 'NR==8{print $2+$3}'`
      sleep 10
 
S=`ifconfig eth0|awk -F ":" 'NR==8{print $2+$3}'`
      echo  $[($S-$F)/1024]
 
done
 
这样就实现了,网络流量的监控。这种只是实现功能的一种办法,还有许多种方式方法,例如函数等等。大家去完善吧!

(编辑:我爱故事小小网_铜陵站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读