import ldap
LDAP_URI = "ldaps://ldap-server.org"
POWERFUL_USER = "admin"
POWERFUL_USER_PWD = "$3cr31"
# on se connecte au server ldap
conn = ldap.initialize(LDAP_URI)
# on se bind avec un utilisateur qui a le droit de toucher aux attributs
# des utilisateur
conn.simple_bind_s(POWERFUL_USER, POWERFUL_USER_PWD)
# pour déplacer un utilisateur, on a besoin de sont DN actuel...
user_old_dn = "uid=my_user,ou=group1,dc=ldap-server,dc=org"
# et du DN de son nouveau plus proche parent
new_superior_dn = "ou=group2,dc=ldap-server,dc=org"
# c'est parti !
conn.rename_s(dn=dn, newrdn="uid=my_user", newsuperior=new_superior_dn)
# on vérifie
conn.search_s(base="ou=group1,dc=ldap-server,dc=org",
scope=ldap.SCOPE_SUBTREE,
filterstr="uid=my_user",
attrlist=["distinguishedName"])
# retourne []
conn.search_s(base="ou=group2,dc=ldap-server,dc=org",
scope=ldap.SCOPE_SUBTREE,
filterstr="uid=my_user",
attrlist=["distinguishedName"])
# retourne [("UID=my_user,OU=group2,DC=ldap-server,DC=org",
# {'distinguishedName':
# ["UID=my_user,OU=group2,DC=ldap-server,DC=org]})]