1
0
mirror of https://github.com/samba-team/samba.git synced 2025-07-31 20:22:15 +03:00

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 <timbeale@catalyst.net.nz>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
This commit is contained in:
Tim Beale
2018-10-18 16:59:24 +13:00
committed by Douglas Bagnall
parent a9a65adb02
commit ca570bd482

View File

@ -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))