在Rust中使用ethtool获取NIC统计信息

8zzbczxx  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(88)

我试图在Rust中获取NIC设备的统计信息,这基本上相当于运行ethtool -S eth0
我一直在研究ethtool文档的netlink接口和现有的库:neliethtool的数据。
然而,它们都没有提供开箱即用的解决方案。这是我使用neli库的尝试:ethtool.rs .然而,我不断得到device not foundoperation not supported错误。而对于ethtool库,我需要在库本身中添加功能,这是我目前正在尝试做的。
如果您能提供任何帮助,告诉我们什么是最直接的方法,而不需要运行系统命令和阅读标准输出,我们将不胜感激。

nbysray5

nbysray51#

如果你想进入低层,你可以直接在MDIO总线上询问链接和自动状态。仅适用于以太网。基本上重新实现mii-tool.c(来自net-tools包)。
您还可以在/sys/文件系统中查看有用的文件。例如,我找到了/sys/devices/pci0000:00/.../net/enp5s0/carrier,这是一个可以打开的文件,read()将返回“0\n”或“1\n”。
或者对于tx/rx stats,您可以解析/proc/net/dev的(ascii)输出。阅读一个设备文件,即使有两个无意义的ascii转换,也比生成一个新进程更有性能。可能有一些你想要的IOCTL,但是文本文件很容易找到和检查。
另一个(更高级的)选项可能是以某种方式侦听networkmanager事件,可能使用dbus客户端。

相关问题