如何监控网络接口(go-lang)

时间:2014-12-12 23:44:54

标签: linux go network-programming

我需要监控网络接口的本地地址(IP)(即,无论何时更改或拔掉接口都做了一些事情),我想知道最好的方法是什么。目前我正在使用InterfaceByName来获取并验证/匹配无限循环中的接口详细信息。我监视几个接口,所以我想知道它是不是坏事,或者我是否应该使用一些延迟等。如果操作系统在接口更新时发送信号但我不知道这样的事情会很好。

1 个答案:

答案 0 :(得分:1)

这将是非常系统特定的。在Linux上,我认为现在最简单的方法是读取每个接口的sysfs个文件。

$ cat /sys/class/net/eth0/operstate
up
$ cat /sys/class/net/eth0/carrier
1

偶尔轮询他们不应该消耗太多资源,并为您提供所需的资源。

要获得更及时的更新,您可以设置netlink套接字以从内核接收NETLINK_ROUTE更新。周围有Go netlink packages个{{3}},但我不确定它们有多普遍。