#!/usr/bin/python import dbus def extract_values(values): val = "{" for key in values.keys(): val += " " + key + "=" if key in ["Servers", "Excludes"]: val += extract_list(values[key]) else: val += str(values[key]) val += " }" return val def extract_list(list): val = "[" for i in list: if type(i).__name__ == 'Dictionary': val += extract_values(i) elif type(i).__name__ == 'Struct': val += extract_list(i) else: val += " " + str(i) val += "]" return val bus = dbus.SystemBus() manager = dbus.Interface(bus.get_object('net.connman.vpn', '/'), 'net.connman.vpn.Manager') for entry in manager.GetConnections(): path = entry[0] properties = entry[1] print "[ %s ]" % (path) for key in properties.keys(): if key in ["IPv4", "IPv6" ]: val = extract_values(properties[key]) elif key in ["Nameservers","ServerRoutes","UserRoutes"]: val = extract_list(properties[key]) else: val = str(properties[key]) print " %s = %s" % (key, val) print