mercoledì 22 dicembre 2010

Manipolazione dati su LDAP

Il seguente script permette di modificare un indirizzo email in un albero LDAP:

#!/usr/bin/python

import ldap

server = "ldap://localhost"
base_dn = "dc=domain,dc=net"
user_admin = ["cn=admin", "xxx"]
search_filter = "objectClass=person"
attributes = ["mail"]

search_scope = ldap.SCOPE_SUBTREE
mod_attribute = ldap.MOD_REPLACE

counter = 0

try:
    # Apertura della connessione con server LDAP e successiva
    # autenticazione come admin
    con = ldap.initialize(server)
    con.protocol_version = ldap.VERSION3
    con.simple_bind_s(",".join([user_admin[0], base_dn]),
                      user_admin[1])

    # Estrazione dei dati da modificare
    result_set = con.search_s(",".join(["ou=Users", base_dn]),
                              search_scope, search_filter,
                              attributes)

    # Iterazione dei risultati estratti
    for item in result_set:
        if not item[1] == {}:
            # Verifica che il dato estratto sia quello da modificare
            if item[1]["mail"][0].endswith("domain.net"):
                counter += 1
                fields = item[1]["mail"][0].split("@")

                # Modifica della email dell'utente
                print "Update email for " + item[0]
                modify = [(mod_attribute, "mail",
                           "@".join([fields[0], "dominio.it"])
                          )]
                con.modify_s(item[0], modify)

    print "Updated " + str(counter) + " users"
except ldap.LDAPError, e:
    print "Error"
    print e

Nessun commento:

Posta un commento