procura e substitui o atributo ldap

3

Eu tenho um conjunto razoavelmente grande de dados em um servidor LDAP. Alguns dos atributos aparecem em muitos lugares e eu gostaria de substituí-los.

Os dados não são enormes, mas são suficientes para excluir a edição e a exportação manualmente.

Qual é a melhor abordagem para isso? Use uma ferramenta LDAP para localizá-los e substituí-los? Escreva um script para modificar as entradas? Exportar dados e editá-los localmente?

Todas as sugestões seriam úteis.

    
por benc 07.07.2011 / 06:22

1 resposta

1

Presumivelmente, você pode encontrar todos os dn's para entradas onde esses atributos substituem por algo como ldapsearch '(attribute=value)' |grep ^dn e, em seguida, para cada entrada, criar um script ldapmodify , portanto, usando um pouco de Python:

from subprocess import Popen, PIPE

input=('searchoutput.txt')
for line in input:
    dn = line.rstrip().split()[1]
    modify_str = line
    modify_str += 'changetype: modify\nreplace: attribute\nattribute: newvalue'
    lm = Popen('ldapmodify <various args>', shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE)
    (out, err) = lm.communicate(modify_str)
    if lm.wait() != 0:
        sys.stderr.write('ldapmodify of {0} failed:\n{1}'.format(dn, err))

Ou seja. Para cada entrada que você precisa modificar, gere uma cláusula que indique:

dn: MyEntryCN
changetype: modify
replace: attribute
attribute: newvalue

e alimente isso para ldapmodify (com a autenticação relevante, argumentos de linha de comando etc).

    
por 07.07.2011 / 07:57