From: Tim Beale Date: Thu, 18 Oct 2018 03:59:24 +0000 (+1300) Subject: netcmd: Include num-members in 'samba-tool group list --verbose' X-Git-Tag: tdb-1.3.17~1100 X-Git-Url: http://git.samba.org/?a=commitdiff_plain;h=ca570bd4827aa8f61ceb137fbe748ac2f7929c44;p=samba.git netcmd: Include num-members in 'samba-tool group list --verbose' This adds an easy way for users to see (via samba-tool) how many members are in various groups, without querying the members for each individual group. For example, you could pipe this output to grep to check for groups with zero or one members (i.e. historic groups that may no longer make sense). Signed-off-by: Tim Beale Reviewed-by: Douglas Bagnall --- diff --git a/python/samba/netcmd/group.py b/python/samba/netcmd/group.py index 82d215f8f13..7c7dfd8a699 100644 --- a/python/samba/netcmd/group.py +++ b/python/samba/netcmd/group.py @@ -323,37 +323,41 @@ class cmd_group_list(Command): samdb = SamDB(url=H, session_info=system_session(), credentials=creds, lp=lp) + attrs=["samaccountname"] + if verbose: + attrs += ["grouptype", "member"] domain_dn = samdb.domain_dn() res = samdb.search(domain_dn, scope=ldb.SCOPE_SUBTREE, expression=("(objectClass=group)"), - attrs=["samaccountname", "grouptype"]) + attrs=attrs) if (len(res) == 0): return if verbose: - self.outf.write("Group Name Group Type Group Scope\n") - self.outf.write("-----------------------------------------------------------------------------\n") + self.outf.write("Group Name Group Type Group Scope Members\n") + self.outf.write("--------------------------------------------------------------------------------\n") for msg in res: self.outf.write("%-44s" % msg.get("samaccountname", idx=0)) hgtype = hex(int("%s" % msg["grouptype"]) & 0x00000000FFFFFFFF) if (hgtype == hex(int(security_group.get("Builtin")))): - self.outf.write("Security Builtin\n") + self.outf.write("Security Builtin ") elif (hgtype == hex(int(security_group.get("Domain")))): - self.outf.write("Security Domain\n") + self.outf.write("Security Domain ") elif (hgtype == hex(int(security_group.get("Global")))): - self.outf.write("Security Global\n") + self.outf.write("Security Global ") elif (hgtype == hex(int(security_group.get("Universal")))): - self.outf.write("Security Universal\n") + self.outf.write("Security Universal") elif (hgtype == hex(int(distribution_group.get("Global")))): - self.outf.write("Distribution Global\n") + self.outf.write("Distribution Global ") elif (hgtype == hex(int(distribution_group.get("Domain")))): - self.outf.write("Distribution Domain\n") + self.outf.write("Distribution Domain ") elif (hgtype == hex(int(distribution_group.get("Universal")))): - self.outf.write("Distribution Universal\n") + self.outf.write("Distribution Universal") else: - self.outf.write("\n") + self.outf.write(" ") + self.outf.write(" %u\n" % len(msg.get("member", default=[]))) else: for msg in res: self.outf.write("%s\n" % msg.get("samaccountname", idx=0))