【问题标题】:catch system events with python用python捕获系统事件
【发布时间】:2012-08-16 15:14:11
【问题描述】:

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

我需要类似的东西:

if class.network_connect_event():
        do some stuff

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

谢谢

编辑:

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

【问题讨论】:

    标签: python networking systemevent


    【解决方案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 的兼容性是基本的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 2014-01-17
    相关资源
    最近更新 更多