summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorJule Anger <ja@sernet.de>2019-08-26 10:25:18 +0200
committerStefan Metzmacher <metze@samba.org>2020-01-21 14:38:45 +0000
commit2186c5a6a4c6de16a0371289832ca99bbc5bc3c2 (patch)
treed400b5c72c84e1c0cec4912e9881ce23daca5767 /python
parent918d91bb8432ffc0788409ef94fa8b1365be8500 (diff)
downloadsamba-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.py19
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))