about summary refs log tree commit diff
path: root/examples/python/nm-state.py
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2010-11-29 00:47:11 +0100
committerMichael Biebl <biebl@debian.org>2010-11-29 00:47:11 +0100
commit9fae01fa351805b2903e535736e06971bc0b925e (patch)
treec19bccf84c9f894e50fae678ba6ee2b2044e2d30 /examples/python/nm-state.py
Imported Upstream version 0.8.1 upstream/0.8.1
Diffstat (limited to 'examples/python/nm-state.py')
-rw-r--r--examples/python/nm-state.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/examples/python/nm-state.py b/examples/python/nm-state.py
new file mode 100644
index 00000000..fddd2da6
--- /dev/null
+++ b/examples/python/nm-state.py
@@ -0,0 +1,69 @@
+#!/bin/env python
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Copyright (C) 2010 Red Hat, Inc.
+#
+
+import dbus
+
+bus = dbus.SystemBus()
+
+proxy = bus.get_object("org.freedesktop.NetworkManager", "/org/freedesktop/NetworkManager")
+manager = dbus.Interface(proxy, "org.freedesktop.NetworkManager")
+
+# Get device-specific state
+devices = manager.GetDevices()
+for d in devices:
+    dev_proxy = bus.get_object("org.freedesktop.NetworkManager", d)
+    prop_iface = dbus.Interface(dev_proxy, "org.freedesktop.DBus.Properties")
+
+    # Get the device's current state and interface name
+    state = prop_iface.Get("org.freedesktop.NetworkManager.Device", "State")
+    name = prop_iface.Get("org.freedesktop.NetworkManager.Device", "Interface")
+
+    # and print them out
+    if state == 8:   # activated
+        print "Device %s is activated" % name
+    else:
+        print "Device %s is not activated" % name
+
+
+# Get active connection state
+manager_prop_iface = dbus.Interface(proxy, "org.freedesktop.DBus.Properties")
+active = manager_prop_iface.Get("org.freedesktop.NetworkManager", "ActiveConnections")
+for a in active:
+    ac_proxy = bus.get_object("org.freedesktop.NetworkManager", a)
+    prop_iface = dbus.Interface(ac_proxy, "org.freedesktop.DBus.Properties")
+    state = prop_iface.Get("org.freedesktop.NetworkManager.ActiveConnection", "State")
+
+    # Connections in NM are a collection of settings that describe everything
+    # needed to connect to a specific network.  Lets get those details so we
+    # can find the user-readable name of the connection.
+    con_path = prop_iface.Get("org.freedesktop.NetworkManager.ActiveConnection", "Connection")
+    con_service = prop_iface.Get("org.freedesktop.NetworkManager.ActiveConnection", "ServiceName")
+
+    # ask the provider of the connection for its details
+    service_proxy = bus.get_object(con_service, con_path)
+    con_iface = dbus.Interface(service_proxy, "org.freedesktop.NetworkManagerSettings.Connection")
+    con_details = con_iface.GetSettings()
+    con_name = con_details['connection']['id']
+
+    if state == 2:   # activated
+        print "Connection '%s' is activated" % con_name
+    else:
+        print "Connection '%s' is activating" % con_name
+
+