100 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
#!/usr/bin/python2
 | 
						|
 | 
						|
# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
 | 
						|
# Use of this source code is governed by a BSD-style license that can be
 | 
						|
# found in the LICENSE file.
 | 
						|
 | 
						|
import pprint
 | 
						|
import sys
 | 
						|
 | 
						|
import common
 | 
						|
from autotest_lib.client.cros.networking import shill_proxy
 | 
						|
 | 
						|
def usage():
 | 
						|
    """ Prints a script usage message. """
 | 
						|
    cmd = sys.argv[0]
 | 
						|
    print 'Usage: %s <command> [more parameters]' % cmd
 | 
						|
    print 'Example uses:'
 | 
						|
    print cmd, 'list - List devices and their properties.'
 | 
						|
    print cmd, 'get-property <devname> [propname] - List device property.'
 | 
						|
    print cmd, 'set-property <devname> <propname> <value>'
 | 
						|
    print '     Set property on devname to value'
 | 
						|
    return False
 | 
						|
 | 
						|
 | 
						|
def set_device_property(device, property_key, value):
 | 
						|
    """Sets a property on a device
 | 
						|
 | 
						|
    @param device Interface representing a device
 | 
						|
    @param property_key string name of property
 | 
						|
    @param value string value of property to set
 | 
						|
 | 
						|
    """
 | 
						|
    shill_proxy.ShillProxy.set_dbus_property(device, property_key, value)
 | 
						|
    return True
 | 
						|
 | 
						|
 | 
						|
def print_device_properties(device, property_key):
 | 
						|
    """Prints one or all properties on a device
 | 
						|
 | 
						|
    @param device Interface representing a device
 | 
						|
    @param property_key string name of property or None
 | 
						|
 | 
						|
    """
 | 
						|
    shill = shill_proxy.ShillProxy()
 | 
						|
    if property_key is None:
 | 
						|
        pprint.pprint(
 | 
						|
                shill.dbus2primitive(device.GetProperties(utf8_strings=True)),
 | 
						|
                indent=2)
 | 
						|
    else:
 | 
						|
        pprint.pprint({property_key:
 | 
						|
                shill_proxy.ShillProxy.get_dbus_property(device, property_key)},
 | 
						|
                indent=2)
 | 
						|
    return True
 | 
						|
 | 
						|
 | 
						|
def list_devices():
 | 
						|
    """ Display detailed device information. """
 | 
						|
    shill = shill_proxy.ShillProxy()
 | 
						|
    for device in shill.get_devices():
 | 
						|
        print 'Device: %s' % device.object_path
 | 
						|
        print_device_properties(device, None)
 | 
						|
        print
 | 
						|
    return True
 | 
						|
 | 
						|
 | 
						|
def main():
 | 
						|
    """ Main entry point for the device script. """
 | 
						|
    if len(sys.argv) < 2:
 | 
						|
        return usage()
 | 
						|
 | 
						|
    command = sys.argv[1]
 | 
						|
 | 
						|
    if command == 'list':
 | 
						|
      return list_devices()
 | 
						|
 | 
						|
    if len(sys.argv) > 2:
 | 
						|
        shill = shill_proxy.ShillProxy()
 | 
						|
        device = shill.find_object('Device', {'Name': sys.argv[2]})
 | 
						|
        if device is None:
 | 
						|
            print "No device named %s found" % sys.argv[2]
 | 
						|
            return usage()
 | 
						|
 | 
						|
        if command == 'get-property':
 | 
						|
            return print_device_properties(
 | 
						|
                    device,
 | 
						|
                    None if len(sys.argv) < 4 else sys.argv[3])
 | 
						|
 | 
						|
        if command == 'set-property' and len(sys.argv) == 5:
 | 
						|
            return set_device_property(
 | 
						|
                    device,
 | 
						|
                    sys.argv[3],
 | 
						|
                    sys.argv[4])
 | 
						|
 | 
						|
    return usage()
 | 
						|
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    if not main():
 | 
						|
        sys.exit(1)
 |