| #!/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" |