我在 LDAP 服务器中拥有大量数据。有些属性出现在很多地方,我想替换它们。
数据不是很大,但足以排除手动编辑和导出。
最好的方法是什么?使用 LDAP 工具查找并替换它们?编写脚本来修改条目?导出数据并在本地编辑?
任何的意见都将会有帮助。
答案1
假设您可以找到所有条目的 dn,其中这些属性用类似的内容替换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
(使用相关的身份验证等命令行参数)。