| #!/usr/bin/python3 |
| |
| import sys |
| import dbus |
| import collections |
| |
| bus = dbus.SystemBus() |
| |
| manager = dbus.Interface(bus.get_object("net.connman.iwd", "/"), |
| "org.freedesktop.DBus.ObjectManager") |
| objects = manager.GetManagedObjects() |
| |
| Obj = collections.namedtuple('Obj', ['interfaces', 'children']) |
| tree = Obj({}, {}) |
| for path in objects: |
| node = tree |
| elems = path.split('/') |
| for subpath in [ '/'.join(elems[:l + 1]) for l in range(1, len(elems)) ]: |
| if subpath not in node.children: |
| node.children[subpath] = Obj({}, {}) |
| node = node.children[subpath] |
| node.interfaces.update(objects[path]) |
| |
| root = tree.children['/net'].children['/net/connman'].children['/net/connman/iwd'] |
| for path, phy in root.children.items(): |
| if 'net.connman.iwd.Adapter' not in phy.interfaces: |
| continue |
| |
| properties = phy.interfaces['net.connman.iwd.Adapter'] |
| |
| print("[ %s ]" % path) |
| |
| for key in properties: |
| val = properties[key] |
| if key == 'SupportedModes': |
| val = [str(mode) for mode in val] |
| print(" %s = %s" % (key, val)) |
| |
| print(" Devices:") |
| |
| for path2, device in phy.children.items(): |
| if 'net.connman.iwd.Device' not in device.interfaces: |
| continue |
| |
| print(" [ %s ]" % path2) |
| for interface in device.interfaces: |
| name = interface.rsplit('.', 1)[-1] |
| if name not in ('Device', 'Station', 'AccessPoint', 'AdHoc'): |
| continue |
| |
| properties = device.interfaces[interface] |
| for key in properties: |
| val = properties[key] |
| print(" %s.%s = %s" % (name, key, val)) |
| |
| if name != 'Station': |
| continue |
| |
| print(" Sorted networks:") |
| |
| station = dbus.Interface(bus.get_object("net.connman.iwd", path2), |
| 'net.connman.iwd.Station') |
| for path3, rssi in station.GetOrderedNetworks(): |
| print(" [ %s ]" % path3) |
| |
| properties2 = objects[path3]['net.connman.iwd.Network'] |
| print(" SSID = %s" % (properties2['Name'],)) |
| print(" Signal strength = %i dBm" % (rssi / 100,)) |
| print(" Security = %s" % (properties2['Type'],)) |