使用Python捕获系统事件

3
我的问题是,我想在Python脚本中捕获系统事件。如果网线插入网络设备并且计算机连接到该网络,我想处理此事件,并启动一个函数(因为此时默认网关正在更改,我需要识别这一点)。是否有模块可以完成此操作?
我需要像这样的内容:
if class.network_connect_event():
        do some stuff

这个事件处理必须与Windows和Unix系统配合使用。

谢谢。

编辑:

我真正需要的是一种识别USB网络设备的方法。 当插入时,重要的是能够识别它并获取其IP地址。

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绑定来监听这些事件。我不熟悉如何操作的详细信息,但是有tutorials

编辑:

尝试使用此软件包: http://packages.python.org/python-networkmanager/(声明:我没有尝试过)。

编辑 2:

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


是的,听起来不错...我会尝试一下...但与Windows的兼容性很基础。 - HappyHacking

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接