Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python LDAP查询不工作_Python_Email_Filter_Ldap - Fatal编程技术网

Python LDAP查询不工作

Python LDAP查询不工作,python,email,filter,ldap,Python,Email,Filter,Ldap,我真的没有主意了 我最近被指派改进Python中的一个脚本,以便它能够获取电子邮件与字符串匹配的所有用户(更确切地说,是电子邮件与从HTML文本输入中获得的值匹配的所有用户) 使用此过滤器时效果良好(“搜索”是从文本输入中获得的文本): user\u filter='(邮件=%s)%search 但它需要电子邮件值精确到可以与用户的电子邮件匹配,而我需要的是匹配任何写下的值(字符串) 我使用的最后一个过滤器是: user\u filter='(mail=*%s*)'%search 也像这样: u

我真的没有主意了

我最近被指派改进Python中的一个脚本,以便它能够获取电子邮件与字符串匹配的所有用户(更确切地说,是电子邮件与从HTML文本输入中获得的值匹配的所有用户)

使用此过滤器时效果良好(“搜索”是从文本输入中获得的文本):
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一样。尝试不必使用它。如果使用两个通配符重试以确保它工作(或至少使其工作),可能(我的代码)仍缺少某些内容。