【发布时间】:2021-11-02 21:17:28
【问题描述】:
我正在使用 python-ldap 处理一个 LDIF 文件并(有条件地)将该文件中的记录导入 LDAP 服务器。我能找到的每一个文档和每一个例子,都只是假设 LDIF 记录是additions。但是,我的脚本处理的 LDIF 文件是具有 changetype 的版本 1 文件,如下所示:
version: 1
dn: cn=group,ou=groups,o=vault
changetype: add
cn: group
mail: group@a.org
member: cn=users,ou=users,o=vault
dn:cn=users,ou=users,o=vault
changetype: modify
add: memberOf
memberOf: cn=group,ou=groups,o=vault
-
根据python-ldap的文档,我需要使用modlist.addModlist 进行添加和modlist.modifyModlist 进行修改。
我的问题是:如何从解析的 LDIF 数据中获取 LDAP 中的修改? 大致如下:
parser = ldif.LDIFRecordList(open(filename,'r'))
parser.parse()
for dn, entry in parser.all_records:
if entry['changetype'] == "add":
crud = modlist.addModlist(entry)
ldapcon.add_s(dn,crud)
else:
crud = modlist.modifyModlist(entry)
ldapcon.modify_s(dn,crud)
上述方法不起作用; modlist.modifyModlist() 需要两个参数。
此外,entry 在元组数组中仅包含来自 LDIF 的确切行,包括 changetype 和(强制)分隔线,带有单个破折号:-(
我真的需要逐行解析输入数据并创建自己的修改吗?如果是这样,LDIF 解析器的附加值是多少?
【问题讨论】:
标签: python ldap python-ldap ldif