使用ldap3 读取ldap的数据
# coding=utf-8
import json
from loguru import logger
from ldap3 import Server, Connection, SUBTREE, ALL
def ldap_nub(branch):
"""
读取ldap的数据,将在职(status为1)的数据写入数据库
"""
ldap_host = "app.test.com" # ldap服务器地址
ldap_port = 389 # 默认389
# ldap_user = "" # ldap用户名
# ldap_pass = "" # ldap密码
ldap_base_search = "OU={Branch},OU=公司,DC=test,DC=com".format(Branch=branch) # 查询域
server = Server(host=ldap_host, port=ldap_port, use_ssl=False, get_info='ALL')
# 这个首先看看你的admin能不能正常connect
conn = Connection(server, user="haha@test.com", password="123456", auto_bind=True)
# print(conn)
conn.bind()
# conn.search(search_base=ldap_base_search,search_filter='(objectclass=person)', attributes="ALL_ATTRIBUTES")
# conn.search(ldap_base_search, "(sAMAccountName=strong)", attributes=['*']) # 搜索单个用户所有信息
# conn.search(ldap_base_search, "(sAMAccountName=strong)",
# attributes=['distinguishedName']) # 搜索单个用户的OU信息
conn.search(ldap_base_search, '(objectclass=person)', attributes=['*']) # 搜索OU下面的所有用户
# conn.search(ldap_base_search,'(objectclass=person)', attributes=['status'])
return conn
# for i in range(0, len(conn.entries)):
# res_dict = json.loads(conn.entries[i].entry_to_json())
# try:
# if res_dict["attributes"]["status"][0] == "1":
# Name = res_dict["attributes"]["displayName"][0]
# Job = res_dict["attributes"]["cn"][0]
#
# s = res_dict["attributes"]["distinguishedName"][0].split(",")[1:-3]
# Branch = ",".join(s)
# Mail = res_dict["attributes"]["mail"][0]
# # logger.info(Name)
# # logger.info(Mail)
# ldap_mysql.mysql_conn(Sheet, Name, Job, Branch, Mail)
# # print(len(conn.entries))
# except Exception as f:
# logger.error(f)
# print(len(conn.entries))
# print(conn.extend.standard.who_am_i())
# a = json.loads(conn.entries[0].entry_to_json())
# x = a["attributes"]["department"][0]
# m = a["attributes"]["mail"][0]
# z = a["attributes"]["cn"][0]
# n = a["attributes"]["displayName"][0]
# zz = a["attributes"]["jobLevelDescription"][0]
# print({"系统": x, "邮箱": m, "工号": z, "名字": n},zz)
# if __name__ == "__main__":
# ldap_nub("系统")