ldap3 / python3使用活动目录连接modify()函数错误(格式错误的更改)

时间:2017-06-28 23:20:40

标签: python-3.x active-directory ldap

我正在运行一个活动目录,并希望更改用户的属性。我使用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提前。

1 个答案:

答案 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;,它周围没有列表([]);)