diff options
author | Björn Baumbach <bb@sernet.de> | 2019-12-17 16:27:32 +0100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2020-01-21 14:38:46 +0000 |
commit | 47f9ee91ed9d5bdaea82413f36d17bc72498a79a (patch) | |
tree | 3ff84e487740750ff6e9f097b6579d7d69aff357 | |
parent | aedcf6a52748d0858aab7d1b3e0253592e963706 (diff) | |
download | samba-47f9ee91ed9d5bdaea82413f36d17bc72498a79a.tar.gz |
samba-tool group removemembers: adapt functionality to addmembers command
Adds --member-dn and --object-types options.
Signed-off-by: Björn Baumbach <bb@sernet.de>
Reviewed-by: Ralph Boehme <slow@samba.org>
-rw-r--r-- | python/samba/netcmd/group.py | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/python/samba/netcmd/group.py b/python/samba/netcmd/group.py index 4bf417cc878..eacb89efb5b 100644 --- a/python/samba/netcmd/group.py +++ b/python/samba/netcmd/group.py @@ -295,7 +295,7 @@ sudo samba-tool group removemembers supergroup User1 Example2 shows how to remove a single user account, User2, from the supergroup AD group. It uses the sudo command to run as root when issuing the command. """ - synopsis = "%prog <groupname> <listofmembers> [options]" + synopsis = "%prog <groupname> (<listofmembers>]|--member-dn=<member-dn>) [options]" takes_optiongroups = { "sambaopts": options.SambaOptions, @@ -306,12 +306,32 @@ Example2 shows how to remove a single user account, User2, from the supergroup A takes_options = [ Option("-H", "--URL", help="LDB URL for database or target server", type=str, metavar="URL", dest="H"), + Option("--member-dn", + help=("DN of the group member to be removed.\n" + "The --object-types option will be ignored."), + type=str), + Option("--object-types", + help=("Comma separated list of object types.\n" + "The types are used to filter the search for the " + "specified members.\n" + "Valid values are: user, group, computer, serviceaccount, " + "contact and all.\n" + "Default: user,group,computer"), + default="user,group,computer", + type=str), ] - takes_args = ["groupname", "listofmembers"] + takes_args = ["groupname", "listofmembers?"] - def run(self, groupname, listofmembers, credopts=None, sambaopts=None, - versionopts=None, H=None): + def run(self, + groupname, + listofmembers=None, + credopts=None, + sambaopts=None, + versionopts=None, + H=None, + member_dn=None, + object_types="user,group,computer"): lp = sambaopts.get_loadparm() creds = credopts.get_credentials(lp, fallback_machine=True) @@ -319,8 +339,14 @@ Example2 shows how to remove a single user account, User2, from the supergroup A try: samdb = SamDB(url=H, session_info=system_session(), credentials=creds, lp=lp) - samdb.add_remove_group_members(groupname, listofmembers.split(","), - add_members_operation=False) + if member_dn is not None: + groupmembers = [ member_dn ] + else: + groupmembers = listofmembers.split(',') + samdb.add_remove_group_members(groupname, + groupmembers, + add_members_operation=False, + member_types=group_member_types) except Exception as e: # FIXME: Catch more specific exception raise CommandError('Failed to remove members "%s" from group "%s"' % (listofmembers, groupname), e) |