免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3699 | 回复: 11
打印 上一主题 下一主题

请教一个 捕获网卡流量的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-25 14:08 |只看该作者 |倒序浏览
普通用户


通过 grep eth0 /proc/net/dev|awk '{print $10}' 来获取 Transmit  

我想问的是 Transmit的值是累加的 还是当前的流量值 ,
我以前以为是累加的。每次都存到一个文件 然后下一次来求出差值。。可/proc/net/dev 里面的数有时候比上一次取出来的还小。。

请问要怎么样才能算出网卡的流量 。 我要在 crontab里实现


谢谢大家了先

论坛徽章:
0
2 [报告]
发表于 2009-11-25 14:12 |只看该作者
装个mrtg就可以了.....

论坛徽章:
0
3 [报告]
发表于 2009-11-25 15:28 |只看该作者
原帖由 cxfcxf 于 2009-11-25 14:12 发表
装个mrtg就可以了.....



机器很重要。不能装其他的东西

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2009-11-25 15:41 |只看该作者
ifconfig里的流量是累加的

论坛徽章:
0
5 [报告]
发表于 2009-11-25 16:22 |只看该作者
原帖由 寂寞烈火 于 2009-11-25 15:41 发表
ifconfig里的流量是累加的



我也以为是累加
后来使用 会经常出现 当前的值 小于上一次的值。

论坛徽章:
0
6 [报告]
发表于 2009-11-25 16:33 |只看该作者
是累加
然后

  1. #!/usr/bin/perl

  2. use strict;
  3. use warnings;

  4. my @trafout;
  5. my @eth0;
  6. $trafout[0] = 0;
  7. my $traffic;
  8. my $count = 0;

  9. while (1) {
  10.     open (TF, "/proc/net/dev") or die $!;
  11.     while(<TF>) {
  12.         if (/eth0/) {
  13.             @eth0 = split;
  14.             push @trafout, $eth0[9];
  15.             $traffic = $trafout[1] - $trafout[0];
  16.             my $a = shift @trafout;
  17.             print "$traffic\n" unless ($count == 0);
  18.         }
  19.     }
  20.     $count++;
  21.     close TF;
  22.     sleep 1;
  23. }
复制代码


我写的
改sleep时间 就是多久更新一次
修改一下

[ 本帖最后由 cxfcxf 于 2009-11-25 16:48 编辑 ]

论坛徽章:
3
15-16赛季CBA联赛之辽宁
日期:2017-12-28 12:15:1015-16赛季CBA联赛之福建
日期:2017-12-28 12:26:5115-16赛季CBA联赛之新疆
日期:2018-03-07 15:09:17
7 [报告]
发表于 2009-11-25 16:51 |只看该作者
原帖由 cxfcxf 于 2009-11-25 16:33 发表
是累加
然后

#!/usr/bin/perl

use strict;
use warnings;

my @trafout;
my @eth0;
$trafout[0] = 0;
my $traffic;
my $count = 0;

while (1) {
    open (TF, "/proc/net/dev") or die $!;
...

可以改成shell么,没看懂啊。

论坛徽章:
0
8 [报告]
发表于 2009-11-25 16:59 |只看该作者
给你个完整版...我也算写个简单版iptraf了- -

  1. #!/usr/bin/perl

  2. use strict;
  3. use warnings;

  4. my @trafout;
  5. my @trafin;
  6. my @eth0;
  7. $trafout[0] = 0;
  8. $trafin[0] = 0;
  9. my $traffico;
  10. my $traffici;
  11. my $count = 0;

  12. while (1) {
  13.     open (TF, "/proc/net/dev") or die $!;
  14.     while(<TF>) {
  15.         if (/eth0/) {
  16.             @eth0 = split;
  17.             $eth0[0] =~ s/^eth0\:(.*)/$1/;
  18.             push @trafout, $eth0[9];
  19.             push @trafin, $eth0[0];
  20.             $traffico = $trafout[1] - $trafout[0];
  21.             $traffici = $trafin[1] - $trafin[0];
  22.             $traffici = int($traffici/1024);
  23.             $traffico = int($traffico/1024);
  24.             shift @trafout;
  25.             shift @trafin;
  26.             print "trafficin\ ${traffici}kB\n" unless ($count == 0);
  27.             print "trafficout\ ${traffico}kB\n" unless ($count == 0);
  28.         }
  29.     }
  30.     $count++;
  31.     close TF;
  32.     sleep 1;
  33. }
复制代码


我真蛋疼...

论坛徽章:
0
9 [报告]
发表于 2009-11-25 17:02 |只看该作者

  1. trafficin 0kB
  2. trafficout 0kB
  3. trafficin 1kB
  4. trafficout 0kB
  5. trafficin 413kB
  6. trafficout 0kB
  7. trafficin 650kB
  8. trafficout 0kB
  9. trafficin 650kB
  10. trafficout 0kB
  11. trafficin 651kB
  12. trafficout 0kB
  13. trafficin 650kB
  14. trafficout 0kB
  15. trafficin 648kB
  16. trafficout 0kB
  17. trafficin 649kB
  18. trafficout 0kB
  19. trafficin 651kB
  20. trafficout 0kB
  21. trafficin 651kB
  22. trafficout 0kB
  23. trafficin 650kB
  24. trafficout 0kB
  25. trafficin 546kB
  26. trafficout 0kB
  27. trafficin 16kB
  28. trafficout 0kB
复制代码

这个是脚本的输出效果

[code]
development:~# wget http://apache.tradebit.com/pub/httpd/httpd-2.2.14.tar.gz
--2009-11-24 13:53:36--  http://apache.tradebit.com/pub/httpd/httpd-2.2.14.tar.gz
Resolving apache.tradebit.com... 74.55.216.20
Connecting to apache.tradebit.com|74.55.216.20|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6684081 (6.4M) [application/x-gzip]
Saving to: &acirc;

论坛徽章:
0
10 [报告]
发表于 2009-11-25 17:06 |只看该作者
原帖由 XQKA 于 2009-11-25 16:51 发表

可以改成shell么,没看懂啊。

应该可以
吧每次得到的结果放到数组里 然后每次减法之后 都shift掉数组第一个元素
这样2个数组永远保持在2个元素 节约内存

写多点的话 就是保留一定长度的数组 就可以用GD绘图了

MRTG效果...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP