在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
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top