【发布时间】:2011-11-17 16:43:15
【问题描述】:
我一直在阅读有关如何使用 Python 搜索 LDAP 服务器的信息,但我已经卡了几个小时,我不知道为什么。这是我第一次尝试使用这种 API。
以下是我打开连接并尝试搜索的方式:
aims_server = '#####.com'
base_dn = 'cn=EMPLOYEES,cn=portal,cn=Groups,dc=Company,dc=com'
username = 'cn=admin,cn=users,dc=Company,dc=com'
password='#####'
directory=ldap.open(aims_server)
directory.simple_bind_s(username, password)
#retrieve the current members from group
old = {'uniquemember':attr['uniquemember']}
然后我故意破坏代码,以便我可以使用调试器并使用它进行搜索:
>>> searchFilter = "cn=*"
>>> directory.search_s(base_dn,ldap.SCOPE_SUBTREE,searchFilter, retrieveAttributes)
结果:
[('cn=EMPLOYEES,cn=portal,cn=groups,dc=Company,dc=com', {'displayname': ['Employees'], 'description': ['Members of this group are employees. '], 'objectclass': ['top', 'groupOfUniqueNames', 'orclGroup'], 'orclisvisible': ['true'], 'owner': ['cn=portal_admin ,cn=users,dc=Company,dc=com', 'cn=portal,cn=users, dc=Company,dc=com'], 'uniquemember': ['cn=alan,cn=users,dc=Company,dc=com', 'cn=alan_r,cn=users,dc=Company,dc=com', ....
如果我有"cn=*" 的过滤器,它会带回上面的字典,但如果我实际上在searchFilter 中放入任何内容,它不会带回任何结果。
有人有什么见解吗?我想知道我是否在目录中搜索的不够深入?
编辑
我能想到的最好办法是将设置更改为:
searchFilter = "cn=*"
retrieveAttributes = ["uniquemember"]
然后:
(cn, attr) = searcher.pop()
返回:
{'uniquemember': ['cn=alan_t,cn=users,dc=company,dc=com','cn=alan_r,cn=users,dc=company....
似乎搜索的级别太高了,我要如何下一个级别来搜索唯一成员?
我只想搜索他们的名字!
【问题讨论】: