2014-01-13 3 views
3

Используя python-ldap, я хочу удалить целое поддерево моего дерева LDAP.Удалить рекурсивно поддерево LDAP с помощью python

я придумал:

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.

ответ

2

Я не думаю, что есть такой вариант.

вам придется перебирать и удалять записи. Один из них, о котором я хотел бы упомянуть, заключается в том, что вы не можете удалить подразделение с объектами под ним, если у вас нет другой настройки в AD.

+0

К сожалению, это ответ, который я пришел ... Для неумения для удаления непустого OU, это правда, даже в простой LDAP (не используя AD, но openldap). –

3

Для тех, кто может наткнуться на этот вопрос позже, вот быстрый и грязный кусок я написал для себя (по существу, что @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) 
Смежные вопросы