使用LDIF和Python删除LDAP中的属性

使用LDIF和Python删除LDAP中的属性,python,python-2.7,ldap,ldif,Python,Python 2.7,Ldap,Ldif,我想做(我认为)一件很简单的事。我有一个类似以下内容的LDAP条目(LDIF格式): 在我的代码中,所有这些条目都表示为dict。我正在使用Python的LDIF编写器将这些条目写入适当的LDIF。导出整个内容很容易: def dump_ldif(self): writer = LDIFWriter(open('entrybackup.ldif', 'wb')) writer.unparse(cn=myorg, self.all_the_teams.get_teamstr_

我想做(我认为)一件很简单的事。我有一个类似以下内容的LDAP条目(LDIF格式):

在我的代码中,所有这些条目都表示为dict。我正在使用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']}')
但是,如何使用delete/modify运算符实现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来编写这个输出。我只想找到输出“delete”LDIF指令的语法。

我不是最伟大的Python专家,但LDAP是我的小菜一碟

传递给编写器的条目只是一个带有值的数据对象,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)
'uniqueMember': deletes
编辑

如果您有一个名为
deletes
的包含已删除用户的数组,则可以将其传递到条目中,如下所示:

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)
'uniqueMember': deletes

似乎有效:-)

我不是最伟大的Python专家,但LDAP是我的小菜一碟

传递给编写器的条目只是一个带有值的数据对象,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)
'uniqueMember': deletes
编辑

如果您有一个名为
deletes
的包含已删除用户的数组,则可以将其传递到条目中,如下所示:

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)
'uniqueMember': deletes
似乎起作用了:-)

就像一个天使从上面飞过来。非常感谢你!这个解决方案非常有效,就像天上的天使一样。非常感谢你!这个解决方案非常有效。