我正在尝试结合使用ldap3和python来检索组的成员,还可以检索它们的sAMAccountName,因为我们已经混合了DN(一些带有NTID,另一些带有名字/姓氏)。
我一直在尝试,但没有任何运气,如果有任何帮助,将不胜感激:
from ldap3 import Server, Connection, AUTO_BIND_NO_TLS, SUBTREE, BASE,
ALL_ATTRIBUTES, ObjectDef, AttrDef, Reader, Entry, Attribute,
OperationalAttribute import ldap3
conn = Connection(Server('adserver.com', port=389, use_ssl=False),
auto_bind=AUTO_BIND_NO_TLS, user='DOMAIN\\\NTID',
password='somepassword')
conn.search(search_base='CN=GROUPNAME,OU=Groups,OU=Resources,OU=Global,DC=adserver.com',
search_filter='(objectCategory=person)', search_scope=SUBTREE,
attributes = ['sAMAAccountName'], size_limit=0)
print(conn.response_to_json())发布于 2019-03-06 05:09:32
在搜索成员之前,必须先从组中拉出成员列表。
conn.search(
search_base='CN=GROUPNAME,OU=Groups,OU=Resources,OU=Global,DC=adserver.com',
search_filter='(objectClass=group)',
search_scope='SUBTREE',
attributes = ['member']
)
for entry in conn.entries:
print(entry.member.values)这将打印出一个作为可分辨名称的成员列表。
然后,您将需要执行新的搜索,该搜索遍历每个成员并返回每个成员的sAMAccountName。
下面是完整的代码(可能需要调整):
conn.search(
search_base='CN=GROUPNAME,OU=Groups,OU=Resources,OU=Global,DC=adserver.com',
search_filter='(objectClass=group)',
search_scope='SUBTREE',
attributes = ['member']
)
for entry in conn.entries:
for member in entry.member.values:
conn.search(
search_base='OU=Global,DC=adserver.com',
search_filter=f'(distinguishedName={member})',
attributes=[
'sAMAccountName'
]
)
user_sAMAccountName = conn.entries[0].sAMAccountName.values
print(user_sAMAccountName)发布于 2015-12-20 23:57:20
找到的条目应该在Connection对象的entries属性中。尝试使用print(conn.entries)
https://stackoverflow.com/questions/34366499
复制相似问题