Я читал о том, как искать серверы LDAP с помощью Python, но я застрял в течение нескольких часов, и я не уверен, почему. Я впервые пытаюсь использовать такого рода 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
, он не вернет никаких результатов.
У кого-нибудь есть понимание? Мне интересно, если я не ищу достаточно глубоко в каталогах?
EDIT
Лучшее, что я могу из этого извлечь, это изменить настройки на:
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....
Похоже, что он пытается найти слишком высокий уровень, как мне перейти на другой уровень, чтобы искать уникальных участников?
Я просто хочу найти их имена!