我真的用完了想法。LDAP查询不起作用
我最近被分配来改进我们在Python中使用的脚本,以便它可以获取其电子邮件匹配字符串的所有用户(更确切地说,所有用户的电子邮件都与从HTML的文本输入中获得的值匹配)。
它通过使用此过滤器效果很好(“搜索”是从文本输入获得的文本):
user_filter = '(mail=%s)' % search
,但它需要的电子邮件值完全相同,因此它可以与用户的电子邮件匹配,我需要的是匹配任何写下来的值(字符串)。
上次使用的过滤器是这样的:
user_filter = '(mail=*%s*)' % search
而且这样的:
user_filter = '(mail=%s*)' % search
(请注意使用通配符)
,但没有一次成功。
任何想法,我可以做到这一点?你需要更多的上下文吗?
我使用LDAP和功能search_s
这是代码片段:
def ldap_query(query):
""" returns the members of an LDAP group """
try:
ldap_conn = ldap.initialize(LDAP_URL)
ldap_conn.timeout = LDAP_TIMEOUT
ldap_conn.simple_bind(LDAP_USERNAME, LDAP_PASSWORD)
if not ldap_conn.whoami_s():
raise Exception('503 Unable to authenticate to LDAP server with master user & password')
res = ldap_conn.search_s(LDAP_BASE_DN, ldap.SCOPE_SUBTREE, query)
if res == []:
raise Exception('Group not found in LDAP directory, using filter {}'.format(query))
print res
而我使用它是这样的:
print ldap_query('(mail=my[email protected])')
但是如果我使用通配符,我最后出现了错误:
print ldap_query('(mail=a.name*)')
EDITED 只是现在它开始工作,用最后一个过滤器(一个略高于此)。不知道为什么它以前没有工作。
请提供演示错误的最短可能的完整程序。有关更多信息,请参见[mcve]。 –