diff options
Diffstat (limited to 'examples/test_account.py')
-rwxr-xr-x | examples/test_account.py | 83 |
1 files changed, 62 insertions, 21 deletions
diff --git a/examples/test_account.py b/examples/test_account.py index 835e3d3..f36cc7a 100755 --- a/examples/test_account.py +++ b/examples/test_account.py @@ -4,51 +4,65 @@ import sys import pywbem def usage(): - print """Usage: %s <address> <command> <command parameter> [username] [password] + print """Usage: %s <address> <username> <password> <command> [parameter...] Connect to CIM server at address and issue a command on the machine. Available commands and their parameters: - list_user - list users, parameter is user name or * for all - list_group - list groups, parameter is group name or * for all + list_user - list users, parameter is user name or empty for all + list_group - list groups, parameter is group name or empty for all group_members - list members of group, parameter is group name + create_account - creates a new account, parameters: + [0] = Name: required, user login name -Example: %s https://127.0.0.1:5989 list_user * root redhat""" % (sys.argv[0], sys.argv[0]) +Example: %s https://127.0.0.1:5989 root redhat list_user""" % (sys.argv[0], sys.argv[0]) - -if len(sys.argv) < 6: +if len(sys.argv) < 5: usage() sys.exit(1) url = sys.argv[1] -command = sys.argv[2] -parameter = sys.argv[3] username = None password = None -if len(sys.argv) > 4: - username = sys.argv[4] -if len(sys.argv) > 5: - password = sys.argv[5] + +if sys.argv[2]: + username = sys.argv[2] +if sys.argv[3]: + password = sys.argv[3] + +command = sys.argv[4] +parameters = sys.argv[5:] cliconn = pywbem.WBEMConnection(url, (username, password)) if command == "list_user": # Listintg users is simple, just query all instances from LMI_Account # or select only by given Name - if parameter == "*": - instances = cliconn.ExecQuery('WQL', 'select * from LMI_Account') - else: - instances = cliconn.ExecQuery('WQL', 'select * from LMI_Account where Name = "%s"' % parameter) + slct = "select * from LMI_Account" + if parameters: + for i, parameter in enumerate(parameters): + if i==0: + slct += ' where Name = "%s"' % parameter + else: + slct += ' or Name = "%s"' % parameter + + instances = cliconn.ExecQuery('WQL', slct) for instance in instances: print instance.tomof() elif command == "list_group": # Listintg gruops is simple, just query all instances from LMI_Group # or select only by given Name - if parameter == "*": - instances = cliconn.ExecQuery('WQL', 'select * from LMI_Group') - else: - instances = cliconn.ExecQuery('WQL', 'select * from LMI_Group where Name = "%s"' % parameter) + slct = "select * from LMI_Group" + if parameters: + for i, parameter in enumerate(parameters): + if i==0: + slct += ' where Name = "%s"' % parameter + else: + slct += ' or Name = "%s"' % parameter + + + instances = cliconn.ExecQuery('WQL', slct) for instance in instances: print instance.tomof() @@ -59,7 +73,12 @@ elif command == "group_members": # And finally select all accounts (LMI_Account) which are connected through # LMI_AssignedAccountIdentity with selected identities (this should be # 1 to 1) - groups = cliconn.ExecQuery('WQL', 'select * from LMI_Group where Name = "%s"' % parameter) + if not parameters: + usage() + sys.exit(1) + + else: + groups = cliconn.ExecQuery('WQL', 'select * from LMI_Group where Name = "%s"' % parameters[0]) for group in groups: identities = cliconn.Associators(group.path, AssocClass='LMI_MemberOfGroup') for identity in identities: @@ -67,6 +86,28 @@ elif command == "group_members": for account in accounts: print account.tomof() +elif command == "create_account": +# create a new account +# Firstly find system name, which is necessary parameter for method +# then invoke the method + if not parameters: + usage() + sys.exit(1) + + computerSystems = cliconn.ExecQuery('WQL', 'select * from Linux_ComputerSystem') + if not computerSystems: + print >>sys.stderr, "No usable Linux_ComputerSystem instance found." + sys.exit(2) + + if len(computerSystems) > 1: + print >>sys.stderr, "More than one Linux_ComputerSystem instance found, don't know which to use." + sys.exit(3) + + lams = cliconn.ExecQuery('WQL', 'select * from LMI_AccountManagementService')[0] + + print cliconn.InvokeMethod("CreateAccount", lams.path, + Name = parameters[0], + System = computerSystems[0].path) else: # unknown command |