我正在运行一个活动目录,并希望更改用户的属性。我使用python3 ldap3库和modify()方法。 每次我尝试修改用户时,我的代码都会出现异常。
from ldap3 import Server, Connection, MODIFY_REPLACE
server = Server('ldaps://domain.local:636', port = 636, use_ssl = True)
try:
conn = Connection(server, user="philipp@domain.local", password="MYPW", auto_bind=True)
print("User found")
except:
print("User not found or connection error")
result = conn.modify('CN=phil stone,OU=Firewall,DC=domain,DC=local',{'rules': [(MODIFY_REPLACE, ['replaced-text'])]})
print(result)
Traceback (most recent call last):
File "/mnt/hgfs/shared/eclipse/osfipa/ldap/ldap_write.py", line 28, in <module>
result = conn.modify('CN=phil stone,OU=Firewall,DC=domain,DC=local',{'rules': [(MODIFY_REPLACE, ['replaced-text'])]})
File "/usr/local/lib/python3.5/dist-packages/ldap3/core/connection.py", line 763, in modify
raise LDAPChangesError(self.last_error)
ldap3.core.exceptions.LDAPChangesError: malformed change
在AD GUI中,我检查了用户(对象)的属性“distinguishedName”,其值为“CN = philipp stone,OU = Firewall,DC = domain,DC = local”。 所以修改函数的DN应该是正确的。我想改变“规则”属性。
任何想法我在这里做错了什么? Thx提前。
答案 0 :(得分:0)
https://github.com/cannatag/ldap3/issues/42
有一个简单的语法错误。在上面的链接中,人们可以找到答案。 简单的解决方案是改变它,如下面的代码。
result = conn.modify('CN=phil stone,OU=Firewall,DC=domain,DC=local',{'rules': (MODIFY_REPLACE, ['replaced-text'])})
查看部分&#34; MODIFY_REPLACE replace-text&#34;,它周围没有列表([]);)