Linux:检索每界面发送的接收组计数器(以太网、ipv4,ipv6)
-
20-08-2019 - |
题
在Linux上,我怎么可以(通过编程方式)检索以下的柜台 在每一个接口基础:
- 发送的接收到以太网的框架,
- 发送的接收IPv4包,
- 发送的接收IPv6分组。
解决方案
你应该能做到这一点使用 iptables
规则和组计数器,例如
# input and output must be accounted for separately
# ipv4, eth0
iptables -I INPUT -i eth0
iptables -I OUTPUT -o eth0
# ipv6, eth0
ip6tables -I INPUT -i eth0
ip6tables -I OUTPUT -o eth0
和查的统计数据,分析出这些:
iptables -L -vxn
ip6tables -L -vxn
你也应该看看的 -Z
标志的时候你想重计数器。
其他提示
在我的系统,有下的文件 /sys/class/net/eth0/statistics
, ,这给各种统计数据的网络接口。
这是假设一个含糊的最近的Linux已 /sys
(目标节点)安装。
cat /proc/net/dev
应该包含计、统计数据和信息。
你总是可以分析各种核状态的文件,我认为这是什么样的工具 netstat
做。
人页建议:
/proc/net/raw
--原座的信息/proc/net/tcp
--TCP socket信息/proc/net/udp
--UDP座的信息
我猜应该有一个非proc的方式来做到这一点,也许在 /sys
太?我有一个快速查找,但没有找到任何东西。
或者只是分析的输出 netstat -i
.或 strace netstat -i
, 和使用,以作出它在哪里寻找信息。
ifconfig
告诉你金额的数据转移(字节和分组)。
以下命令给ipv4/ipv6统计保持全系统:
netstat --statistics
nstat -z
cat /proc/net/dev_snmp6/eth0 gives ipv6 stats per interface
你可以打印完整的统计信息与 册页:
ethtool -S eth1
你可以很容易地做到这一点在C#在monodevelop:
using System.Net.NetworkInformation;
foreach (NetworkInterface ni in interfaces)
{
// perform your calculations
}
不隶属于 StackOverflow