代码之家  ›  专栏  ›  技术社区  ›  Bruno Rijsman

Linux:检索每个接口发送/接收的数据包计数器(以太网、IPv4、IPv6)

  •  11
  • Bruno Rijsman  · 技术社区  · 17 年前

    在Linux上,如何(以编程方式)检索以下计数器 基于每个接口 :

    • 发送/接收以太网帧,
    • 发送/接收的IPv4数据包,
    • 发送/接收的IPv6数据包。
    10 回复  |  直到 9 年前
        1
  •  7
  •   xahtep    17 年前

    你应该可以用 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 要重置计数器的时间标志。

        2
  •  21
  •   Will Brian Hodge    9 年前

    在我的系统中,下面有文件 /sys/class/net/eth0/statistics ,它提供有关网络接口的各种统计信息。

    这是假设最近的Linux /sys (sysfs)已装入。

        3
  •  9
  •   Will Brian Hodge    9 年前
    cat /proc/net/dev
    

    应包含计数器、统计信息和信息。

        4
  •  4
  •   Will Brian Hodge    9 年前

    您总是可以自己解析各种内核状态文件,我认为这就是工具所喜欢的。 netstat 做。

    手册页建议:

    • /proc/net/raw --原始套接字信息
    • /proc/net/tcp --TCP套接字信息
    • /proc/net/udp --UDP套接字信息

    我想应该有一个非过程的方法来做这个,也许在 /sys 也是吗?我看了一下,但什么也没找到。

        5
  •  2
  •   Douglas Leeder    17 年前

    或者只是解析 netstat -i . 或 strace netstat -i 然后用它找出信息的位置。

        6
  •  2
  •   Aaron Digulla    17 年前

    ifconfig 告诉您传输的数据量(字节和数据包)。

        7
  •  1
  •   Arman H Lebo    12 年前

    以下命令提供了在系统范围内维护的IPv4/IPv6状态:

    netstat --statistics
    
    nstat -z
    
    cat /proc/net/dev_snmp6/eth0  gives ipv6 stats per interface
    
        8
  •  1
  •   brotherrabbit    11 年前

    您可以使用 乙醇工具 : ethtool -S eth1

        9
  •  0
  •   dsm    17 年前

    Wireshark (过去是空灵的)可以帮助你。

    Netstat 会是我的第二个猜测

        10
  •  -1
  •   martin    11 年前

    在MonoDevelop中,您可以很容易地在C中做到这一点:

    using System.Net.NetworkInformation;
    
    foreach (NetworkInterface ni in interfaces)
    {
      // perform your calculations
    }
    
    推荐文章