我真的用完了想法。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]。 –