diff options
author | Jule Anger <ja@sernet.de> | 2019-08-26 10:25:18 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2020-01-21 14:38:45 +0000 |
commit | 2186c5a6a4c6de16a0371289832ca99bbc5bc3c2 (patch) | |
tree | d400b5c72c84e1c0cec4912e9881ce23daca5767 /python | |
parent | 918d91bb8432ffc0788409ef94fa8b1365be8500 (diff) | |
download | samba-2186c5a6a4c6de16a0371289832ca99bbc5bc3c2.tar.gz |
samba-tool: add -b/--base-dn option to OUs list command
With this option it's e.g. possible to list the OUs which are
located under a different specific place in the AD.
Signed-off-by: Jule Anger <ja@sernet.de>
Reviewed-by: Björn Baumbach <bb@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Diffstat (limited to 'python')
-rw-r--r-- | python/samba/netcmd/ou.py | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/python/samba/netcmd/ou.py b/python/samba/netcmd/ou.py index a715a5bee13..f68cd2f7af2 100644 --- a/python/samba/netcmd/ou.py +++ b/python/samba/netcmd/ou.py @@ -298,6 +298,9 @@ class cmd_list(Command): takes_options = [ Option("-H", "--URL", help="LDB URL for database or target server", type=str, metavar="URL", dest="H"), + Option("-b", "--base-dn", + help="Specify base DN to use.", + type=str), Option("--full-dn", dest="full_dn", default=False, action='store_true', help="Display DNs including the base DN."), ] @@ -308,15 +311,24 @@ class cmd_list(Command): "versionopts": options.VersionOptions, } - def run(self, sambaopts=None, credopts=None, versionopts=None, H=None, + def run(self, + sambaopts=None, + credopts=None, + versionopts=None, + H=None, + base_dn=None, full_dn=False): lp = sambaopts.get_loadparm() creds = credopts.get_credentials(lp, fallback_machine=True) samdb = SamDB(url=H, session_info=system_session(), credentials=creds, lp=lp) - domain_dn = ldb.Dn(samdb, samdb.domain_dn()) - res = samdb.search(domain_dn, scope=ldb.SCOPE_SUBTREE, + search_dn = ldb.Dn(samdb, samdb.domain_dn()) + if base_dn: + search_dn = samdb.normalize_dn_in_domain(base_dn) + + res = samdb.search(search_dn, + scope=ldb.SCOPE_SUBTREE, expression="(objectClass=organizationalUnit)", attrs=[]) if (len(res) == 0): @@ -324,6 +336,7 @@ class cmd_list(Command): for msg in sorted(res, key=attrgetter('dn')): if not full_dn: + domain_dn = ldb.Dn(samdb, samdb.domain_dn()) msg.dn.remove_base_components(len(domain_dn)) self.outf.write("%s\n" % str(msg.dn)) |