【问题标题】:How to monitor a network interface ( go-lang)如何监控网络接口(go-lang)
【发布时间】:2014-12-12 23:44:54
【问题描述】:

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

【问题讨论】:

  • 你用的是什么平台?
  • linux(任何),不过也可以在 Mac 上工作(仅限开发)。

标签: linux go network-programming


【解决方案1】:

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

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

偶尔轮询它们不应该消耗太多资源,并且给你你需要的东西。

为了更及时的更新,您可以设置一个netlink 套接字来接收来自内核的NETLINK_ROUTE 更新。周围有几个Go netlink packages,但我不确定它们的通用性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 2021-09-16
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多