3

我的问题是,我想在 python 脚本中捕获系统事件。如果将电缆插入网络设备并且计算机连接到该网络,我想处理此事件,启动一个功能(因为此时默认网关正在更改,我需要识别这一点)。有这样做的模块吗?

我需要类似的东西:

if class.network_connect_event():
        do some stuff

此事件处理必须适用于 windows 和 Unix 系统。

谢谢

编辑:

我真正需要的是某种方式来识别 USB 网络设备。在插入时识别它并获取它的 IP 地址对我来说很重要。

4

1 回答 1

1

您可能可以通过监听 dbus 事件来做到这一点。

dbus-monitor从命令行使用开始试验。当我断开 eth0 时,来自我的笔记本电脑(Ubuntu)的示例:

$ dbus-monitor --system
...
... # lots of events scroll by, including the ones below
...
signal sender=:1.6 -> dest=(null destination) serial=1275 path=/org/freedesktop/NetworkManager/Devices/0; interface=org.freedesktop.NetworkManager.Device.Wired; member=PropertiesChanged
   array [
      dict entry(
         string "State"
         variant             uint32 70
      )  
   ]  
signal sender=:1.6 -> dest=(null destination) serial=1289 

path=/org/freedesktop/NetworkManager/ActiveConnection/1; interface=org.freedesktop.NetworkManager.Connection.Active; member=PropertiesChanged
   array [
      dict entry(
         string "Default"
         variant             boolean true
      )
      dict entry(
         string "State"
         variant             uint32 2
      )
   ]

您应该能够使用 Python dbus 绑定来监听这些事件。我不熟悉如何做到这一点的细节,但有教程

编辑:

试试这个包:http ://packages.python.org/python-networkmanager/ (免责声明:我没有尝试过)。

编辑2:

我没有注意到您需要 Windows 和 Unix。在 Windows 上,您必须找到另一种方式(因为 dbus 在 Windows 上不使用)。

于 2012-08-16T15:25:12.923 回答