e NetworkManager *** 连接的 dbus 信号处理程序

Posted

技术标签:

【中文标题】e NetworkManager *** 连接的 dbus 信号处理程序【英文标题】:dbus signal handler for e NetworkManager *** connection 【发布时间】:2011-05-23 01:24:08 【问题描述】:

我需要开发一些在建立 *** 连接时执行的 python 代码,*** 由 NetworkManager 控制,我正在尝试弄清楚如何为此使用 NM DBUS 事件。

使用“dbus-monitor --system”我能够识别连接信号:

signal sender=:1.1 -> dest=(null destination) serial=464 path=/org/freedesktop/NetworkManager/ActiveConnection/3; interface=org.freedesktop.NetworkManager.***.Connection; member=PropertiesChanged
   array [
      dict entry(
         string "***State"
         variant             uint32 5
      )
      dict entry(
         string "State"
         variant             uint32 2
      )
   ]

现在我需要识别相应的信号处理程序调用签名:

bus.add_signal_receiver(
   handler_name_in_your_program,
   "signal_name",
   "interface_name",
   "connection_name",
   "object_name"

)

有人可以帮我将 dbus-monitor 跟踪输出转换为总线信号处理程序的相应函数值吗?

【问题讨论】:

【参考方案1】:

我想通了:

def ***_connection_handler(*args, **keywords):
    state = args[0].get('State',0)
    if state == 2:
        # On connect code goes here

system_bus.add_signal_receiver(***_connection_handler,
    dbus_interface="org.freedesktop.NetworkManager.***.Connection",
        signal_name="PropertiesChanged")

【讨论】:

以上是关于e NetworkManager *** 连接的 dbus 信号处理程序的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 dbus 和 NetworkManager 激活连接

关于Linux中网络连接配置(NetworkManager)的一些笔记

centos9启动wifi

系统篇: ubuntu 18.04 不显示网络连接的解决方法

系统篇: ubuntu 18.04 不显示网络连接的解决方法

弹出界面 eth0: 错误:激活连接失败:Device not managed by NetworkManager or una