在Linux中获取“插入以太网线”事件通知
我正在写一个在Linux上运行的Python应用程序。我希望能够注册并在网络电缆插入或拔出时,系统能通知我。
我已经在使用pyUdev(这是libUdev的Python接口),来接收USB插入事件的通知。但是,因为网络的eth0模块(比如说)总是保持加载状态(不管电缆是否插入),所以我得不到我需要的信息。它只对网络状态的上下线事件有效。
我看过很多关于Windows WMI提供这种功能的帖子,但在Linux上没有找到相关的信息。我是不是在找对方向?
如果能有一个Python的解决方案(一个Python库)就最好了,因为我想把它集成到我的程序里。
2 个回答
你有没有了解过 netplugd 这个命令?我不太确定有没有用Python写的封装,但解析它的输出应该不难。
有很多方法可以通过轮询来获取网络接口的“UP”状态,简单来说,就是可以解析ifconfig的输出,或者读取一些特殊的文件,比如/proc/net/...。
不过,如果你想要在网络状态变化时收到“通知”(也就是说,不用自己去轮询),在Ubuntu上最好的选择就是使用netplug这个软件包。它默认是没有安装的,你需要运行以下命令来安装它:
sudo apt-get install netplug
这里有一些文档可以参考:http://manpages.ubuntu.com/manpages/lucid/man8/netplugd.8.html
要设置它,你需要修改一下/etc/netplug/netplugd.conf和/etc/netplug/netplug这两个文件。想要查看这些配置文件的示例,可以参考这个链接中的“Configuring netplug”部分:http://natisbad.org/dyn-net/index.html
通过/etc/netplug/netplug,你可以在网络连接断开或恢复时调用你自己的Python脚本,这样你就可以为你的应用程序生成特定的事件。