Space 在 OU 中导致 ldap 搜索失败
Space in OU causing ldap search to fail
我在 python3.9 中使用 ldap3 库来获取所有成员和经理的详细信息,包括经理的显示名称和特定 AD 组的电子邮件到一个循环列表中。
conn.search(search_base='OU=Groups,OU=US,DC=local,DC=test,DC=org',
search_filter='(&(objectClass=group)(cn=AD-GROUP-NAME))',
attributes=['managedBy','member'],
search_scope='SUBTREE'
)
我将上述结果中每个成员的结果传递到新的搜索中:
for entry in conn.entries:
for member in entry.managedBy:
conn.search(
search_base=member.split(",",2)[2], # Removes Fname & LName from distinguishedName
search_filter=f'(distinguishedName={member})',
attributes=['sAMAccountName','mail','displayName']
)
第二个搜索适用于 大多数 的成员,除非 OU 中有一个 space,如下面的经理的专有名称:
CN=LName, FName,OU=管理员帐户,OU=管理,OU=US,DC=local,DC=test,DC=org
我曾尝试使用 \ 或 \\ 甚至将 space 替换为 20 来避免此问题,但无法使其正常工作。
谢谢。
由于您已经有一个 DN,直接读取此对象可能问题较少且性能更高,如下所示:
for entry in conn.entries:
for member in entry.managedBy:
conn.search(
search_base=member,
search_filter='(objectClass=*)',
search_scope=BASE,
attributes=['sAMAccountName','mail','displayName']
)
我在 python3.9 中使用 ldap3 库来获取所有成员和经理的详细信息,包括经理的显示名称和特定 AD 组的电子邮件到一个循环列表中。
conn.search(search_base='OU=Groups,OU=US,DC=local,DC=test,DC=org',
search_filter='(&(objectClass=group)(cn=AD-GROUP-NAME))',
attributes=['managedBy','member'],
search_scope='SUBTREE'
)
我将上述结果中每个成员的结果传递到新的搜索中:
for entry in conn.entries:
for member in entry.managedBy:
conn.search(
search_base=member.split(",",2)[2], # Removes Fname & LName from distinguishedName
search_filter=f'(distinguishedName={member})',
attributes=['sAMAccountName','mail','displayName']
)
第二个搜索适用于 大多数 的成员,除非 OU 中有一个 space,如下面的经理的专有名称:
CN=LName, FName,OU=管理员帐户,OU=管理,OU=US,DC=local,DC=test,DC=org
我曾尝试使用 \ 或 \\ 甚至将 space 替换为 20 来避免此问题,但无法使其正常工作。
谢谢。
由于您已经有一个 DN,直接读取此对象可能问题较少且性能更高,如下所示:
for entry in conn.entries:
for member in entry.managedBy:
conn.search(
search_base=member,
search_filter='(objectClass=*)',
search_scope=BASE,
attributes=['sAMAccountName','mail','displayName']
)