|  | #!/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 <command>" % (sys.argv[0]) | 
|  | print "" | 
|  | print "  state" | 
|  | print "  services" | 
|  | print "  autoconnect <service> [autoconnect]" | 
|  | print "  connect <service>" | 
|  | print "  disconnect <service>" | 
|  | print "  remove <service>" | 
|  | print "" | 
|  | print "  scan <type>" | 
|  | print "  enable <type>" | 
|  | print "  disable <type>" | 
|  | 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" |