ldap3 python 搜索组成员并检索他们的 sAMAcountName (Active Directory)

python

1个回答

写回答

13662601602

2025-06-20 08:10

+ 关注

Python
Python

使用ldap3 Python库可以方便地搜索Active Directory中的组成员,并检索他们的sAMAcountName。ldap3是一个强大而易于使用的Python库,用于与LDAP(轻量级目录访问协议)服务器进行交互。在本文中,我们将介绍如何使用ldap3来搜索组成员并获取他们的sAMAcountName,并提供一个案例代码示例。

使用ldap3搜索组成员

首先,我们需要安装ldap3库。可以使用pip命令进行安装:

Python

pip install ldap3

接下来,我们需要创建一个LDAP连接对象,并指定连接到的LDAP服务器的主机名、端口号和协议版本。使用以下代码创建LDAP连接对象:

Python

from ldap3 import Server, Connection

# 创建LDAP服务器对象

server = Server('ldap://ldap.example.com', port=389, get_info='ALL')

# 创建LDAP连接对象

conn = Connection(server, user='username', password='password')

在上面的代码中,我们指定了LDAP服务器的主机名为ldap.example.com,端口号为389,并使用"ALL"参数获取服务器的详细信息。还可以根据需要指定用户名和密码进行身份验证。

一旦建立了LDAP连接,我们就可以使用连接对象来执行搜索操作。下面的代码示例演示了如何搜索组成员:

Python

from ldap3 import Server, Connection, SUBTREE, ALL_ATTRIBUTES

# 创建LDAP服务器对象

server = Server('ldap://ldap.example.com', port=389)

# 创建LDAP连接对象

conn = Connection(server, user='username', password='password')

# 进行身份验证并绑定到LDAP服务器

conn.bind()

# 搜索组成员

conn.search('ou=groups,dc=example,dc=com', '(objecTCLass=group)', SUBTREE, attributes=[ALL_ATTRIBUTES])

在上面的代码中,我们使用bind()方法进行身份验证,并将连接对象绑定到LDAP服务器。然后,使用search()方法执行搜索操作。在search()方法中,我们指定了要搜索的基本DN(Distinguished Name),搜索过滤器(objecTCLass=group),搜索范围(SUBTREE表示从基本DN开始的所有子树)以及要返回的属性(ALL_ATTRIBUTES表示返回所有属性)。

检索sAMAcountName

要检索组成员的sAMAcountName属性,我们可以在search()方法中指定它作为要返回的属性。以下是示例代码:

Python

from ldap3 import Server, Connection, SUBTREE, ALL_ATTRIBUTES

# 创建LDAP服务器对象

server = Server('ldap://ldap.example.com', port=389)

# 创建LDAP连接对象

conn = Connection(server, user='username', password='password')

# 进行身份验证并绑定到LDAP服务器

conn.bind()

# 搜索组成员并返回sAMAcountName属性

conn.search('ou=groups,dc=example,dc=com', '(objecTCLass=group)', SUBTREE, attributes=['sAMAcountName'])

# 获取搜索结果

result = conn.response

# 打印每个组成员的sAMAcountName属性

for entry in result:

sAMAcountName = entry['attributes']['sAMAcountName']

print(sAMAcountName)

在上面的代码中,我们在search()方法中指定了要返回的属性为'sAMAcountName'。然后,使用conn.response获取搜索结果,并使用循环遍历每个结果条目,提取并打印sAMAcountName属性的值。

案例代码

下面是一个完整的案例代码,演示了如何使用ldap3 Python库搜索组成员并检索他们的sAMAcountName:

Python

from ldap3 import Server, Connection, SUBTREE, ALL_ATTRIBUTES

# 创建LDAP服务器对象

server = Server('ldap://ldap.example.com', port=389)

# 创建LDAP连接对象

conn = Connection(server, user='username', password='password')

# 进行身份验证并绑定到LDAP服务器

conn.bind()

# 搜索组成员并返回sAMAcountName属性

conn.search('ou=groups,dc=example,dc=com', '(objecTCLass=group)', SUBTREE, attributes=['sAMAcountName'])

# 获取搜索结果

result = conn.response

# 打印每个组成员的sAMAcountName属性

for entry in result:

sAMAcountName = entry['attributes']['sAMAcountName']

print(sAMAcountName)

通过使用ldap3 Python库,我们可以轻松地搜索Active Directory中的组成员,并检索他们的sAMAcountName属性。这使得我们能够方便地获取和处理组成员的信息,以满足各种需求。希望本文对您有所帮助!

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号