これは、おそらく 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 バインディングを使用できるはずです。これを行う方法の詳細に精通していませんが、チュートリアルがあります。
編集:
このパッケージを試してください: http://packages.python.org/python-networkmanager/ (免責事項: 私は試していません)。
編集2:
Windows と Unix が必要なことに気付きませんでした。Windows では、別の方法を見つける必要があります (Windows では dbus が使用されないため)。