python - 在 linux 中获得有关 "Ethernet cable plugged in"事件的通知

标签 python linux dbus ethernet udev

我正在编写一个在 Linux 上运行的 Python 应用程序。如果插入/拔出网络电缆,我希望能够注册并得到系统的通知

我已经在使用 pyUdev (libUdev 的 python 绑定(bind))以获得 USB 插入事件的通知。但是,因为网络 eth0 模块(例如)始终保持加载状态(无论插入的电缆如何),我没有得到我需要的信息。它仅适用于 if up/down 事件。

我已经阅读了很多关于提供此功能的 Windows WMI 的帖子,但没有关于 Linux 的帖子。我的方向是否正确?

执行此操作的 python 方法(python 库)将是理想的,因为我想将其与我的程序集成。

最佳答案

有很多方法可以通过轮询获取网络接口(interface)的“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 脚本。有关这些配置文件的示例,请查看 http://natisbad.org/dyn-net/index.html 上的“配置 netplug”部分

使用/etc/netplug/netplug,您可以在网络中断/启动时调用您自己的 python 脚本,这样您就可以为您的应用程序生成您的事件类型。

关于python - 在 linux 中获得有关 "Ethernet cable plugged in"事件的通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7101297/

相关文章:

python - 是否有一种标准方法可以列出包中 Python 模块的名称?

python - 在python控制台中显示中文字符

python - 如何在 Tensorboard 中显示自定义图像(例如 Matplotlib Plots)?

linux - Apache 重定向傻瓜 .aspx

php - 为什么 Linux 命令 dmidecode 在 exec 中使用时不返回任何内容?

c - tcsendbreak() 中的持续时间单位是什么?

bluetooth - 无法通过 DBus 在 Bluez 中设置 SSP 模式

python - 使用正则表达式删除 html 标签

c++ - 如何在 Qt DBus 调用中从 QDBusMessage 中提取返回的数据?

c - GDBus 相当于 dbus_connection_setup_with_g_main()