2015-03-31 76 views
2
conn=ldap.initialize('ldap://ldap.server.com:389') 
results=conn.search_s('ou=active,ou=infra,o=company', ldap.SCOPE_SUBTREE,'uid=bob') 

results=[('uid=bob,ou=active,ou=infra,o=company', {'telephonenumber': [''], 'cn': ['Bob Bensen (bob)'], 'uidnumber': ['123'], 'manager': ['cn=Andy Home (ahome),ou=sector,ou=dept,o=company'])] 

results[0][1]['manager'] ---> ['cn=Andy Home (ahome),ou=sector,ou=dept,o=company'] 

如何在'ou = active,ou = infra,o = company'中獲得所有用戶的UID,其中manager的cn = ahome?python:ldap where子句

+0

LDAP where子句稱爲過濾器,但您需要顯示一些代碼,以獲取這些結果,以便任何人說出有用的結果... – ig0774 2015-03-31 23:26:58

回答

0

改變這一行的最後一部分,這是從過濾器:

results = conn.search_s('ou=active,ou=infra,o=company', ldap.SCOPE_SUBTREE,'uid=bob') 

喜歡的東西:

results = conn.search_s(
    'ou=active,ou=infra,o=company', 
    ldap.SCOPE_SUBTREE, 
    'manager=cn=Andy Home (ahome),ou=sector,ou=dept,o=company' 
) 

注意,manager屬性存儲經理的完整DN對象,所以僅僅指定ahome是不夠的。在進行搜索之前,您可能需要首先查找DN(它應該是每個LDAP結果的第一項)。

+0

它說錯誤的過濾器錯誤,我不確定經理= CN =& – user3089927 2015-04-01 15:03:34

+1

我想出來了,我可以做results = conn.search_s( 'ou = active,ou = infra,o = company', ldap.SCOPE_SUBTREE, 'manager = cn = * ahome *,ou = sector,ou =部門,o =公司' ) – user3089927 2015-04-01 15:51:44