借助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 这样就实现了,网络流量的监控。这种只是实现功能的一种办法,还有许多种方式方法,例如函数等等。大家去完善吧! ![]() (编辑:我爱故事小小网_铜陵站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |