12

Linux では、インターフェイスごとに次のカウンターを (プログラムで) 取得するにはどうすればよいですか:

  • 送受信されたイーサネット フレーム、
  • 送受信したIPv4パケット、
  • 送受信された IPv6 パケット。
4

10 に答える 10

22

私のシステムでは、/sys/class/net/eth0/statisticsネットワーク インターフェイスに関するさまざまな統計情報を提供する の下にファイルがあります。

これは、/sys(sysfs) がマウントされた最近の Linux を想定しています。

于 2008-12-09T13:06:10.287 に答える
10
cat /proc/net/dev

カウンター、統計、および情報を含める必要があります。

于 2009-02-04T13:24:32.903 に答える
7

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また、カウンターをリセットしたいときのためにフラグを調べる必要があります。

于 2008-12-08T13:57:43.523 に答える
3

さまざまなカーネルステータスファイルをいつでも自分で解析できます。これはツールのようなものだと思いますnetstat

manページは次のことを示唆しています:

  • /proc/net/raw-- RAW ソケット情報
  • /proc/net/tcp-- TCP ソケット情報
  • /proc/net/udp-- UDP ソケット情報

これを行うための非procの方法があるはずだと思い/sysます。ざっと見ましたが、何も見つかりませんでした。

于 2008-12-08T13:58:57.123 に答える
2

の出力を解析するだけですnetstat -i。またはstrace netstat -i、それを使用して、情報を探す場所を見つけます。

于 2008-12-08T14:00:26.013 に答える
2

ifconfig転送されたデータの量 (バイトとパケット) を示します。

于 2008-12-08T14:03:59.487 に答える
1

ethtoolを使用して、完全なイーサネット統計を出力できます。 ethtool -S eth1

于 2015-02-24T14:08:25.633 に答える
0

Wireshark (以前は Ethereal でした) がその手助けをしてくれます。

Netstatは私の2番目の推測です

于 2008-12-08T13:51:35.737 に答える
-1

monodevelop の C# で簡単に実行できます。

using System.Net.NetworkInformation;

foreach (NetworkInterface ni in interfaces)
{
  // perform your calculations
}
于 2015-05-19T20:28:00.650 に答える