我对ldapsearch
有疑问命令。
我想使用 ldapsearch 二进制文件列出 LDAP 组中有限数量的成员。例如,我只想获取请求的 1 到 50 名成员。
ldapsearch -x -h <ldap_serv_addr> -p <ldap_port> -b "<base-dn>" "(&(|(objectClass=inetOrgPerson)(objectClass=user))(memberOf=<group_dn>))"
此请求为我提供了(并且效果很好)组的所有成员。我只想要其中的“范围”。
我知道我必须使用类似 member;range=1-50
的东西,但我不知道将其放在 ldapsearch 命令中的何处。
最佳答案
当您返回一个对象而不是一组对象的多值属性时,使用具有范围的成员是一种解决方案。在此示例中,我正在搜索特定组并返回 50 个成员的组(您的组的正确 objectClass 可能会有所不同,请检查一个对象。或者,如果它是唯一名称,则只需从过滤器中省略 objectClass):
ldapsearch -x -h <ldap_serv_addr> -p <ldap_port> -b "<base-dn>" "(&(objectClass=groupOfUniqueNames)(cn=<groupCN>))" "member;range=0-50"
在您的示例查询中,您要求识别将 memberOf 设置为 groupDN 的对象 - 这不是对象上的单个多值属性,而是一组对象。您可以使用分页来控制设置对象的大小。 如何请求分页结果取决于客户端/语言(并且某些 LDAP 服务器不支持分页操作)。使用 ldapsearch,并假设 LDAP 服务器支持分页查询,您的命令行将是:
ldapsearch -x -h <ldap_serv_addr> -p <ldap_port> -E pr50/prompt -b "<base-dn>" "(&(|(objectClass=inetOrgPerson)(objectClass=user))(memberOf=<group_dn>))"
-E pr50/prompt 将页面大小设置为 50 并提示继续下一页。
我不知道有什么方法可以在第一页结果之后以非交互方式停止,并且搜索组并返回其成员列表更直接。
关于Ldap搜索和范围限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57661754/