一、需求概述
需要通过一个方法,传两个参数,用户名和属性名,获取指定用户的属性值
二、源码
from datetime import datetime
from itertools import chain
from ldap3 import Server, Connection, ALL, NTLM, SUBTREE
def get_attribute(username, attribute):
if username is None or username == "":
return None
server = Server('ldap://example.com') # 替换为你的域控制器的地址
conn = Connection(server, user='your_user', password='your_password', auto_bind=True)
conn.search(
search_base='DC=example,DC=com', # 根据你的AD配置修改
search_filter=f'(sAMAccountName={username})',
search_scope=SUBTREE,
attributes=[f"{attribute}"], # 仅查询需要的属性
)
result = conn.entries
if len(result) > 0:
info = result[0][f"{attribute}"].value
return info
else:
return None
# 示例1 打印 sAMAccountName 属性
result1 = get_attribute("user1", "sAMAccountName")
print(result1) # user1
# 示例2 打印 physicalDeliveryOfficeName 属性
result2 = get_attribute("user2", "physicalDeliveryOfficeName")
print(result2) # ShangHai
# 示例3 打印 objectCategory
result3 = get_attribute("user3", "objectCategory")
print(result3) # CN=Person,CN=Schema,CN=Configuration,DC=example,DC=com