网络管理器VPN连接的dbus信号处理器
我需要写一些Python代码,让它在VPN连接建立时执行。这个VPN是通过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.VPN.Connection; member=PropertiesChanged
array [
dict entry(
string "VpnState"
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 个回答
7
我终于搞明白了:
def vpn_connection_handler(*args, **keywords):
state = args[0].get('State',0)
if state == 2:
# On connect code goes here
system_bus.add_signal_receiver(vpn_connection_handler,
dbus_interface="org.freedesktop.NetworkManager.VPN.Connection",
signal_name="PropertiesChanged")