Pie*_*eau 2 python ldap python-3.x
尝试修改具有多个值的 ldap 属性,似乎无法弄清楚语法。
我正在将ldap3库与 python3 一起使用。
文档给出了一个修改条目的两个属性的示例- 但每个属性只有一个值。
该示例中的字典是我遇到的问题:
c.modify('cn=user1,ou=users,o=company',
{'givenName': [(MODIFY_REPLACE, [<what do I put here>])]})
Run Code Online (Sandbox Code Playgroud)
我想修改 memberuid 属性,而不是只有一个值的“givenname”,该属性显然会有许多名称作为条目。
因此,我将所有 memberuid 放入一个列表中,进行修改,然后尝试将新的用户名/memberuid 列表提供给 MODIFY 命令。就像这样:
oldval = 'super.man'
newval = 'clark.kent'
existingmembers = ['super.man', 'the.hulk', 'bat.man']
newmemberlist = [newval if x==oldval else x for x in existingmembers]
# newmemberlist = ", ".join(str(x) for x in newmemberlist)
Run Code Online (Sandbox Code Playgroud)
我尝试过将 newmemberlist 作为列表传递
'memberuid': [(MODIFY_REPLACE, ['clark.kent', 'the.hulk','bat.man'])]
Run Code Online (Sandbox Code Playgroud)
这给了我TypeError: 'str' object cannot be interpreted as an integer
或一个长字符串的各种组合(注释行),用空格、逗号、分号和我能想到的任何其他内容分隔
'memberuid': [(MODIFY_REPLACE, 'clark.kent, the.hulk, bat.man')]
Run Code Online (Sandbox Code Playgroud)
哪个替换,但我得到一个像这样的memberuid
'clark.kent, the.hulk, bat.man'
小智 5
您需要确保传入要修改的 ldap 对象的 DN。
c.modify(FULL_DN_OF_OBJECT, {'memberuid': [(MODIFY_REPLACE, ['clark.kent', 'the.hulk','bat.man'])]})
Run Code Online (Sandbox Code Playgroud)
那么你应该能够只传递 newmemberlist 而不是 ['clark.kent', 'the.hulk','bat.man']
c.modify(FULL_DN_OF_OBJECT, {'memberuid': [(MODIFY_REPLACE, newmemberlist )]})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3983 次 |
最近记录: |