Поиск и замена атрибута ldap

У меня достаточно большой набор данных на сервере LDAP. Некоторые атрибуты появляются во многих местах, и я хотел бы заменить их.

Данные не огромны, но этого достаточно, чтобы исключить редактирование и экспорт вручную.

Какой лучший подход для этого? Используйте инструмент LDAP, чтобы найти и заменить их? Написать скрипт для изменения записей? Экспортировать данные и редактировать их локально?

Любые предложения будут полезны.

1 ответ

Предположительно, вы можете найти все днс для записей, где эти атрибуты заменяются чем-то вроде ldapsearch '(attribute=value)' |grep ^dn а затем для каждой записи сделать ldapmodify сценарий, так что, используя немного 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))

Т.е. для каждой записи, которую вам нужно изменить, создайте предложение, в котором говорится:

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

и накорми это ldapmodify (с соответствующей аутентификацией и т. д. аргументами командной строки).

Другие вопросы по тегам