使用带 Python 的 LDIF 删除 LDAP 中的属性
Delete an attribute in LDAP using LDIF with Python
我想做的(我想的)是一件很简单的事情。我有一个看起来像这样的 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
在我的代码中,我将所有这些条目表示为字典。我正在使用 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) 做到这一点吗?开始感到疯狂。注意:我可以只做文本 output/manipulation,但我想坚持使用 LDIFWriter 来编写此输出。我只想找到输出 'delete' LDIF 指令的语法。
我不是最伟大的 Python 专家,但 LDAP 是我的小菜一碟。
您传递给编写器的条目只是一个具有值的数据对象,而 Python LDIFWriter
实际上是一个直接的 class,它将其语法转换为 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
似乎有效:-)
我想做的(我想的)是一件很简单的事情。我有一个看起来像这样的 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
在我的代码中,我将所有这些条目表示为字典。我正在使用 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) 做到这一点吗?开始感到疯狂。注意:我可以只做文本 output/manipulation,但我想坚持使用 LDIFWriter 来编写此输出。我只想找到输出 'delete' LDIF 指令的语法。
我不是最伟大的 Python 专家,但 LDAP 是我的小菜一碟。
您传递给编写器的条目只是一个具有值的数据对象,而 Python LDIFWriter
实际上是一个直接的 class,它将其语法转换为 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
似乎有效:-)