我想做(我想的)会是一件非常简单的事情。我有一个看起来像这样的LDAP条目(LDIF格式):
dn: cn=myorg,ou=teams,ou=groups,o=company,c=us
cn: myorg
objectClass: top
objectClass: CompanyTeams
objectClass: groupOfUniqueNames
owner: cn=john,ou=people,o=company,c=us
uniqueMember: cn=bob,ou=people,o=company,c=us
uniqueMember: cn=bill,ou=people,o=company,c=us
uniqueMember: cn=carol,ou=people,o=company,c=us
uniqueMember: cn=frank,ou=people,o=company,c=us
uniqueMember: cn=alice,ou=people,o=company,c=us
在我的代码中,我将所有这些条目表示为dicts。我正在使用Python的LDIF编写器将这些条目写入适当的LDIF。导出整件事很容易:
def dump_ldif(self):
writer = LDIFWriter(open('entrybackup.ldif', 'wb'))
writer.unparse(cn=myorg, self.all_the_teams.get_teamstr_by_name('{'objectClass': ['top', 'CompanyTeams', 'groupOfUniqueNames']'owner': ['cn=john,ou=people,o=company,c=us'], 'uniqueMember': ['uniqueMember: cn=bob,ou=people,o=company,c=us','uniqueMember: cn=bill,ou=people,o=company,c=us','uniqueMember: cn=carol,ou=people,o=company,c=us','uniqueMember: cn=frank,ou=people,o=company,c=us','uniqueMember: cn=alice,ou=people,o=company,c=us'], 'cn': ['myorg']}')
但是你如何使用删除/修改操作符的LDIF输出?我有一份我想要离开的uniqueMember列表:
['cn=bob,ou=people,o=company,c=us', 'cn=bill,ou=people,o=company,c=us']
而且(我相信)这是LDIF格式的最终目标,从我的列表中拉出来:
dn: cn=myorg,ou=teams,ou=groups,o=company,c=us
changetype: modify
delete: uniqueMember
uniqueMember: cn=bob,ou=people,o=company,c=us
uniqueMember: cn=bill,ou=people,o=company,c=us
使用Python(2.7)有没有一些简单的方法可以做到这一点?开始感到疯狂。注意:我可以只进行文本输出/操作,但我想坚持使用LDIFWriter来编写此输出。我只想找到输出'删除'LDIF指令的语法。
答案 0 :(得分:0)
我不是最伟大的Python专家,但LDAP是我的小蛋糕。
您传递给writer的条目只是一个带有值的数据对象,而Python LDIFWriter
实际上是一个简单的类,它将其语法转换为LDIF。
我认为您应该做的是,将您的条目转换为修改,然后然后将其转移到LDIFWriter
上,如下所示:
entry={ 'changetype' : ['modify'],
'delete': ['uniqueMember'],
'uniqueMember': ['cn=bob,ou=people,o=company,c=us','cn=bill,ou=people,o=company,c=us'],
}
writer.unparse('cn=myorg', entry)
修改强>
如果您有一个名为deletes
的已删除用户的数组,您可以将其传递到以下条目中:
'uniqueMember': deletes
似乎工作: - )