ldapsearch的Python代码

时间:2017-11-03 13:35:01

标签: python ldap-query

我有一个脚本:

ldapsearch -xLL -h 10.4.113.46 -D 'E900000@corp.privatedev' -W -b 'dc=corp,dc=privatedev' '(cn=lc_proxy_pentest)'

运行良好。

我使用python编程来进行相同的查询:

from ldap3 import Server, Connection, ALL
....
server = Server('10.4.113.46', get_info=ALL)
conn = Connection(server, 'uid=E900000@corp.privatedev,cn=lc_proxy_pentest,dc=corp,dc=privatedev', 'PaSsWoRd', auto_bind=True)

错误显示:

Traceback (most recent call last):   File "<input>", line 1, in <module>   
File "C:\Users\E900000\Python\lib\site-packages\ldap3\core\connection.py", line 278, in __init__
    self.bind(read_server_info=True)   
File "C:\Users\E900000\Python\lib\site-packages\ldap3\core\connection.py", line 427, in bind
    response = self.post_send_single_response(self.send('bindRequest', request, controls))   
File "C:\Users\E900000\Python\lib\site-packages\ldap3\strategy\sync.py", line 122, in post_send_single_response
    responses, result = self.get_response(message_id)   
File "C:\Users\E900000\Python\lib\site-packages\ldap3\strategy\base.py", line 298, in get_response
    responses = self._get_response(message_id)   
File "C:\Users\E900000\Python\lib\site-packages\ldap3\strategy\sync.py", line 168, in _get_response
    dict_response = self.decode_response(ldap_resp)  
File "C:\Users\E900000\Python\lib\site-packages\ldap3\strategy\base.py", line 403, in decode_response
    result = bind_response_to_dict(component)   
File "C:\Users\E900000\Python\lib\site-packages\ldap3\operation\bind.py", line 119, in bind_response_to_dict
    'saslCreds': bytes(response['serverSaslCreds']) if response['serverSaslCreds'] is not None else None}   
File "C:\Users\E900000\Python\lib\site-packages\pyasn1\type\univ.py", line 984, in __bytes__
    return bytes(self._value) TypeError: cannot convert 'NoValue' object to bytes

如果我只编程

server = Server('10.4.113.46')
conn = Connection(server)
conn.bind()

第三行带来同样的错误。

怎么了?

2 个答案:

答案 0 :(得分:0)

我怀疑E900000@corp.privatedev对应于uid = E900000 @ corp.privatedev,cn = lc_proxy_pentest,dc = corp,dc = privatedev

我假设您使用的是Active Directory(基于E900000@corp.privatedev)。

尝试将dsquery用于Determine the FDN for the user

答案 1 :(得分:0)

连接失败的原因可以参考https://github.com/etingof/pyasn1/issues/52

但在我修改库并启用成功连接后,ldapsearch仍然无效。