5

VPN 接続が確立されたときに実行される Python コードを開発する必要があり、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 トレース出力を bus sginal handler の対応する関数値に変換するのを手伝ってくれますか?

4

1 に答える 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")
于 2010-12-09T22:11:20.813 に答える