Python ldap returns 空列表
Python ldap returns empty list
在将其重写为 python 的 ldap 模块之前,我使用 ldapsearch
测试了我的 ldap 查询。完全相同的查询在 ldapsearch
中工作正常,但 returns 在 python 中是一个空数组。
ldapsearch -H [hostname] -LLL -b [base] -D [user] -w [password] -x "city=Bratislava"
在python中:
ldap_obj = ldap.initialize(ldap_config.LDAP_SERVER)
ldap_obj.simple_bind(ldap_config.LDAP_USER, ldap_config.LDAP_PASSWORD)
ldap_results_obj = ldap_obj.search(
ldap_config.LDAP_BASE_DN,
ldap.SCOPE_SUBTREE,
'city=Bratislava',
)
results = ldap_obj.result(ldap_results_obj)
print results
我尝试使用不同的过滤器,即 uid=bmakan
,这个过滤器在 ldapsearch
和 python 的 ldap 中都有效。当我使用 returns 多个 ldap entires 的过滤器时,它只返回一个空列表。
我不知道为什么,但是使用 LDAPObject.simple_bind_s
而不是 LDAPObject.simple_bind
解决了我遇到的问题。除了后者 returns 一个整数 (docs).
之外,文档对这两个函数的区别非常模糊。
此更改还解决了我面临的另一个问题 - LDAPObject.simple_bind
、LDAPObject.search
的 attrlist
参数无法正常工作 - 它仅返回第一个属性。
如果有人能提供更多信息,我很乐意听取。
有异步和同步方法可用。您可能想使用以 _s
.
结尾的同步方法
在将其重写为 python 的 ldap 模块之前,我使用 ldapsearch
测试了我的 ldap 查询。完全相同的查询在 ldapsearch
中工作正常,但 returns 在 python 中是一个空数组。
ldapsearch -H [hostname] -LLL -b [base] -D [user] -w [password] -x "city=Bratislava"
在python中:
ldap_obj = ldap.initialize(ldap_config.LDAP_SERVER)
ldap_obj.simple_bind(ldap_config.LDAP_USER, ldap_config.LDAP_PASSWORD)
ldap_results_obj = ldap_obj.search(
ldap_config.LDAP_BASE_DN,
ldap.SCOPE_SUBTREE,
'city=Bratislava',
)
results = ldap_obj.result(ldap_results_obj)
print results
我尝试使用不同的过滤器,即 uid=bmakan
,这个过滤器在 ldapsearch
和 python 的 ldap 中都有效。当我使用 returns 多个 ldap entires 的过滤器时,它只返回一个空列表。
我不知道为什么,但是使用 LDAPObject.simple_bind_s
而不是 LDAPObject.simple_bind
解决了我遇到的问题。除了后者 returns 一个整数 (docs).
此更改还解决了我面临的另一个问题 - LDAPObject.simple_bind
、LDAPObject.search
的 attrlist
参数无法正常工作 - 它仅返回第一个属性。
如果有人能提供更多信息,我很乐意听取。
有异步和同步方法可用。您可能想使用以 _s
.