#!/usr/bin/python import sys import dbus bus = dbus.SystemBus() manager = dbus.Interface(bus.get_object("net.connman", "/"), "net.connman.Manager") if len(sys.argv) < 2: print "Usage: %s " % (sys.argv[0]) print "" print " state" print " services" print " autoconnect [autoconnect]" print " connect " print " disconnect " print " remove " print "" print " scan " print " enable " print " disable " print " offlinemode [on|off]" sys.exit(1) def print_services(services): for path, properties in services: identifier = path[path.rfind("/") + 1:] state = " " autoconnect = " " if properties["Favorite"] == dbus.Boolean(1): favorite = "*" if properties["AutoConnect"] == dbus.Boolean(1): autoconnect = " A" else: autoconnect = " " if properties["State"] == "ready": state = "R" elif properties["State"] == "online": state = "O" else: favorite = " " if "Name" in properties.keys(): name = properties["Name"] else: name = "{" + properties["Type"] + "}" print "%s%s%s %-26s { %s }" % (favorite, autoconnect, state, name, identifier) if sys.argv[1] == "state": properties = manager.GetProperties() print "System is %s" % (properties["State"]) elif sys.argv[1] in ["services", "list", "show"]: print_services(manager.GetServices()) elif sys.argv[1] in ["autoconnect", "autoconn"]: if (len(sys.argv) < 3): print "Need at least service parameter" sys.exit(1) path = "/net/connman/service/" + sys.argv[2] service = dbus.Interface(bus.get_object("net.connman", path), "net.connman.Service") if (len(sys.argv) > 3): flag = sys.argv[3].strip().lower() autoconnect = dbus.Boolean(flag not in ['false', 'f', 'n', '0']) service.SetProperty("AutoConnect", autoconnect); print "Auto connect %s for %s" % (autoconnect, sys.argv[2]) else: properties = service.GetProperties() if "Name" in properties.keys(): name = properties["Name"] else: name = "{" + properties["Type"] + "}" if "AutoConnect" in properties.keys(): autoconnect = properties["AutoConnect"] else: autoconnect = dbus.Boolean(0) print "Auto connect %s for %s" % (autoconnect, name) elif sys.argv[1] in ["connect", "conn"]: if (len(sys.argv) < 3): print "Need at least service parameter" sys.exit(1) path = "/net/connman/service/" + sys.argv[2] service = dbus.Interface(bus.get_object("net.connman", path), "net.connman.Service") try: service.Connect(timeout=60000) except dbus.DBusException, error: print "%s: %s" % (error._dbus_error_name, error.message) elif sys.argv[1] in ["disconnect", "disc"]: if (len(sys.argv) < 3): print "Need at least service parameter" sys.exit(1) path = "/net/connman/service/" + sys.argv[2] service = dbus.Interface(bus.get_object("net.connman", path), "net.connman.Service") try: service.Disconnect() except dbus.DBusException, error: print "%s: %s" % (error._dbus_error_name, error.message) elif sys.argv[1] in ["remove"]: if (len(sys.argv) < 3): print "Need at least service parameter" sys.exit(1) path = "/net/connman/service/" + sys.argv[2] service = dbus.Interface(bus.get_object("net.connman", path), "net.connman.Service") properties = service.GetProperties() if properties["Favorite"] == dbus.Boolean(0): print "Only favorite services can be removed" sys.exit(1) try: service.Remove() except dbus.DBusException, error: print "%s: %s" % (error._dbus_error_name, error.message) elif sys.argv[1] == "scan": if len(sys.argv) == 3: path = "/net/connman/technology/" + sys.argv[2] technology = dbus.Interface(bus.get_object("net.connman", path), "net.connman.Technology") technology.Scan() else: print "'%s' takes two arguments" % sys.argv[1] elif sys.argv[1] == "enable": if len(sys.argv) == 3: path = "/net/connman/technology/" + sys.argv[2] technology = dbus.Interface(bus.get_object("net.connman", path), "net.connman.Technology") technology.SetProperty("Powered", True) else: print "'%s' takes two arguments" % sys.argv[1] elif sys.argv[1] == "disable": if len(sys.argv) == 3: path = "/net/connman/technology/" + sys.argv[2] technology = dbus.Interface(bus.get_object("net.connman", path), "net.connman.Technology") technology.SetProperty("Powered", False) else: print "'%s' takes two arguments" % sys.argv[1] elif sys.argv[1] in ["offlinemode", "flightmode"]: if len(sys.argv) == 3: if sys.argv[2] == "on" or sys.argv[2] == "1" or sys.argv[2] == "yes": active = dbus.Boolean(1) elif sys.argv[2] == "off" or sys.argv[2] == "0" or sys.argv[2] == "no": active = dbus.Boolean(0) else: print "Use either 'on', '1', 'yes', 'off', '0' or 'no'" exit() manager.SetProperty("OfflineMode", active) elif len(sys.argv) == 2: properties = manager.GetProperties() print "Offline mode is %s" % (properties["OfflineMode"]) else: print "'%s' takes max. two arguments" % sys.argv[1] else: print "Unknown command"