Networking 实时(CLI)计算网络数据包的数量

Networking 实时(CLI)计算网络数据包的数量,networking,tcpdump,Networking,Tcpdump,我想在CLI中实时计算网络传入/传出数据包的数量(我想使用该计数来编写shell脚本) 我尝试将“tcpdump”和“tsahrk”与管道结合使用,但它不起作用(我没有什么天赋和知识) 最后,我找到了命令“dumpcap”,它几乎符合我的需要,这里是dumpcap stdout [root@hostname ~]# dumpcap -i eth0 File: /tmp/wiresharkXXXXuTE8mU Packets: 31 当我将此命令与“grep”结合使用时,如“dumpcap-i

我想在CLI中实时计算网络传入/传出数据包的数量(我想使用该计数来编写shell脚本)

我尝试将“tcpdump”和“tsahrk”与管道结合使用,但它不起作用(我没有什么天赋和知识)

最后,我找到了命令“dumpcap”,它几乎符合我的需要,这里是dumpcap stdout

[root@hostname ~]# dumpcap -i eth0
File: /tmp/wiresharkXXXXuTE8mU
Packets: 31
当我将此命令与“grep”结合使用时,如“dumpcap-i eth0 | grep-o”[0-9]*”来过滤stdout(31)中的数字,但它仍然不起作用

他们有没有办法解决这个问题或者有什么想法


非常感谢您对此事的关注。

基于我电脑上的以下输出:

ifconfig eth0 | grep RX
      RX packets:113995 errors:0 dropped:0 overruns:0 frame:0
      RX bytes:62022831 (62.0 MB)  TX bytes:11453699 (11.4 MB)
我可以执行以下操作来检索RX数据包的数量:

ifconfig eth0 | grep "RX packets" | tr ":" " " | awk '{print $3}'
113995

不幸的是,现在还不太清楚你到底需要什么。“实时计算数据包数”是什么意思?是否希望计数器递增,并在看到数据包时报告计数器的值?或者您只是想计算在给定的时间段内看到多少数据包?另外,shell脚本的最终目标是什么?

数据包捕获程序(如tcpdump、TShark或dumpcap)可能会将接口置于混杂模式,这意味着将显示比正常情况下更多的数据包

dumpcap中的计数将转到标准错误,而不是标准输出

Dumpcap会将数据包写入有问题的文件,这可能是您想要的,也可能是您不想要的;如果流量很大,则该文件会越来越大,并在文件系统/tmp打开时占用更多空间

您可能想考虑一些从常规网络堆栈获取统计信息的工具,例如在各种OSES上的Linux或NETSTAT上的IFCONFIG:

$ netstat -w 1 -I en0
            input          (en0)           output
   packets  errs      bytes    packets  errs      bytes colls
         0     0          0          0     0          0     0
         0     0          0          0     0          0     0
         1     0         98          1     0         98     0
         1     0         98          1     0         98     0

                      ...