使用python-ldap,我想删除LDAP树的整个子树。
我想出了:
def ldap_recursive_delete_s(con, base_dn):
search = con.search_s(base_dn, ldap.SCOPE_SUBTREE)
delete_list = [dn for dn, _ in search]
delete_list.reverse()
for dn in delete_list:
con.delete_s(dn)
我想知道是否有任何类型的“递归”选项,例如ldaprm
CLI工具。
答案 0 :(得分:4)
对于那些可能在以后偶然发现这个问题的人来说,这是我为自己写的一篇快速而又肮脏的文章(基本上是@navendu所说的):
def recursive_delete(conn, base_dn):
search = conn.search_s(base_dn, ldap.SCOPE_ONELEVEL)
for dn, _ in search:
recursive_delete(conn, dn)
print "Deleting: ", base_dn
conn.delete_s(base_dn)
答案 1 :(得分:2)
我不认为有这样的选择。
您必须迭代并删除条目。 我要提到的一个问题是你不能删除包含对象的OU,除非你在AD中有不同的设置。