Python LDAP查询不工作
我真的没有主意了 我最近被指派改进Python中的一个脚本,以便它能够获取电子邮件与字符串匹配的所有用户(更确切地说,是电子邮件与从HTML文本输入中获得的值匹配的所有用户) 使用此过滤器时效果良好(“搜索”是从文本输入中获得的文本):Python LDAP查询不工作,python,email,filter,ldap,Python,Email,Filter,Ldap,我真的没有主意了 我最近被指派改进Python中的一个脚本,以便它能够获取电子邮件与字符串匹配的所有用户(更确切地说,是电子邮件与从HTML文本输入中获得的值匹配的所有用户) 使用此过滤器时效果良好(“搜索”是从文本输入中获得的文本): user\u filter='(邮件=%s)%search 但它需要电子邮件值精确到可以与用户的电子邮件匹配,而我需要的是匹配任何写下的值(字符串) 我使用的最后一个过滤器是: user\u filter='(mail=*%s*)'%search 也像这样: u
user\u filter='(邮件=%s)%search
但它需要电子邮件值精确到可以与用户的电子邮件匹配,而我需要的是匹配任何写下的值(字符串)
我使用的最后一个过滤器是:user\u filter='(mail=*%s*)'%search
也像这样:user\u filter='(邮件=%s*)'%search
(请注意通配符的使用)
但没有一个成功
有什么想法我能做到这一点吗?你需要更多的背景吗
我正在使用ldap和函数搜索
这是一段代码:
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.name@mycompany.com)')
但如果我使用通配符,我最终会出现错误:
print ldap_query('(mail=a.name*)')
已编辑
刚才它开始工作了,通过使用最后一个过滤器(就在上面的那个)。不知道为什么它以前不工作。它只使用一个通配符就工作得很好:
'(mail=a.name*)
而不是两个:
'(mail=*a.name*)
我之所以使用这种方法,是因为我在使用MysQL“LIKE”query%string%时看到的情况,而使用LDAP筛选器时,情况似乎并非如此。请提供尽可能短的完整程序来演示错误。有关更多信息,请参阅。它应该双向工作,但前导通配符的速度会很慢,因为它需要进行完全搜索,就像wth一样。尝试不必使用它。如果使用两个通配符重试以确保它工作(或至少使其工作),可能(我的代码)仍缺少某些内容。