ldap3 python搜索组成员并检索其名称(Active Directory)
我尝试将ldap3与python结合使用来检索组成员,并检索他们的sAMAccountName,因为我们使用了混合DN(一些带有NTID,另一些带有名字/姓氏) 我一直在尝试此功能,但运气不佳,如有任何帮助,将不胜感激:ldap3 python搜索组成员并检索其名称(Active Directory),python,python-3.x,ldap,Python,Python 3.x,Ldap,我尝试将ldap3与python结合使用来检索组成员,并检索他们的sAMAccountName,因为我们使用了混合DN(一些带有NTID,另一些带有名字/姓氏) 我一直在尝试此功能,但运气不佳,如有任何帮助,将不胜感激: from ldap3 import Server, Connection, AUTO_BIND_NO_TLS, SUBTREE, BASE, ALL_ATTRIBUTES, ObjectDef, AttrDef, Reader, Entry, Attribute,
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())
找到的条目应位于连接对象的
entries
属性中。尝试打印(conn.entries)在搜索成员之前,必须先从组本身中下拉成员列表
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
以下是完整代码的外观(可能需要调整):
所以这确实给了我条目,我的问题是实体看起来是这样的:
CN=Robh01,DC=com
和CN=Arman\,Lewis,DC=com
第一个是完美的,第二个是坏的,因为我需要他们的NTID,我得到了一个很大的组合,因此,我需要找到一种方法从组中获取他们的sAMAccountName属性一旦你拥有了组成员,你就必须查询每个成员的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)