【问题标题】:How to get email address of group member from LDAP using Python如何使用 Python 从 LDAP 获取组成员的电子邮件地址
【发布时间】:2017-09-07 19:28:58
【问题描述】:

我正在尝试使用 python 获取特定 LDAP 组的 AD 组成员的电子邮件地址。

我有以下代码。 Print m 语句如下所示。

输出:

CN=Admin_abc20,OU=Admin ID's,OU=TEST1,DC=other_example,DC=example,DC=com
CN=leterd,OU=Employees,OU=BACD,DC=na,DC=example,DC=com
CN=mytest37,OU=Employees,OU=SUNPH,DC=na,DC=example,DC=com
CN=Doe Mestre\, John,OU=Partners &    Contractors,OU=TEST1,DC=other_example,DC=example,DC=com
CN=Robin\, Mark [ABCD],OU=Partners & Contractors,OU=JJCUS,DC=na,DC=example,DC=com
CN=San Irdondo\, Paul [TEST1 Non-ABC],OU=Partners & Contractors,OU=TEST1,DC=other_example,DC=example,DC=com

我的代码:

def get_group_members(group_name, ad_conn, basedn=AD_USER_BASEDN):
   members = []
   ad_filter = AD_GROUP_FILTER.replace('My_Group_Name', group_name)
   result = ad_conn.search_s(basedn, ldap.SCOPE_SUBTREE, ad_filter)
      if result:
         if len(result[0]) >= 2 and 'member' in result[0][1]:
             members_tmp = result[0][1]['member']
             for m in members_tmp:
               print m
               #email = ad_conn.search_s(m, ldap.SCOPE_SUBTREE,'(objectClass=*)',['mail'])
               #print email

现在,当我从代码的最后 2 行删除注释以获取人员的电子邮件地址时,出现以下错误,请注意我已将公司的 ldap 标识符更改为示例/测试。

你能帮我解决这个问题吗?我是python的新手。

Traceback (most recent call last):
File "/app/abc/python/Test_new.py", line 81, in <module>
group_members = get_group_members(group_name, ad_conn)
File "/app/abc/python/Test_new.py", line 58, in get_group_members
email = ad_conn.search_s(m, ldap.SCOPE_SUBTREE,'(objectClass=*)',   ['mail'])
File "/usr/lib64/python2.6/site-packages/ldap/ldapobject.py", line 516, in search_s
return      self.search_ext_s(base,scope,filterstr,attrlist,attrsonly,None,None,timeout=self.timeout)
File "/usr/lib64/python2.6/site-packages/ldap/ldapobject.py", line 510, in search_ext_s
return self.result(msgid,all=1,timeout=timeout)[1]
File "/usr/lib64/python2.6/site-packages/ldap/ldapobject.py", line 436, in result
res_type,res_data,res_msgid = self.result2(msgid,all,timeout)
File "/usr/lib64/python2.6/site-packages/ldap/ldapobject.py", line 440, in result2
res_type, res_data, res_msgid, srv_ctrls = self.result3(msgid,all,timeout)
File "/usr/lib64/python2.6/site-packages/ldap/ldapobject.py", line 446, in result3
ldap_result = self._ldap_call(self._l.result3,msgid,all,timeout)
File "/usr/lib64/python2.6/site-packages/ldap/ldapobject.py", line 96, in _ldap_call
result = func(*args,**kwargs)
ldap.REFERRAL: {'info': 'Referral:\nldap://ab.example.com/CN=Radfde3,OU=Partners%20&%20Contractors,OU=JANBE,DC=eu,DC=example,DC=com', 'desc': 'Referral'}

【问题讨论】:

    标签: python python-2.7 active-directory


    【解决方案1】:

    我对 Python 了解不多,但我认为您的问题出在 LDAP 过滤器上。最后两行代码试试这个:

    email = ad_conn.search_s(m, ldap.SCOPE_SUBTREE,'(&(objectClass=person)(mail=*))')
    print email
    

    我希望这会有所帮助!

    【讨论】:

    • 感谢 Narsi Yatim,仍然没有提取电子邮件地址信息。
    猜你喜欢
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 2019-01-03
    相关资源
    最近更新 更多