我正在通过 slapd.conf 搜索一个 LDAP 目录,该目录的结果数量比当前设置的 sizelimit 多得多,500,对于所有意图和目的都无法更改)
我的想法是继续运行 ldapsearch,但每次都从不同的偏移量(501、1001 等)运行,直到获得所有结果。
我已经看过ldapsearch的手册页,看来这是使用 -E 选项为您处理的:
-E [!]<ext>[=<extparam>] search extensions (! indicates criticality)
[!]domainScope (domain scope)
[!]mv=<filter> (matched values filter)
[!]pr=<size>[/prompt|noprompt] (paged results/prompt)
[!]subentries[=true|false] (subentries)
[!]sync=ro[/<cookie>] (LDAP Sync refreshOnly)
rp[/<cookie>][/<slimit>] (LDAP Sync refreshAndPersist)
Run Code Online (Sandbox Code Playgroud)
所以我试过:
ldapsearch -h $HOST -p $PORT -x -L -b "$BASE" '*' '+' -E pr=$SIZE
但是,当结果(例如,即使是大小为 50 的分页结果)达到 500 时,我也会收到与结果未分页相同的错误:
Size limit exceeded (4)
我在手册页中看到 virtuallistview 有另一个选项,但无法找到它的示例,而且我认为我的 ldapsearch 版本没有这个选项。
此处的目标是使用 ldapsearch 和 -L 选项创建备份,以创建适合还原数据库的 ldif 文件。
一些谷歌搜索出现了我遇到的同样问题,但没有一个适用的解决方案..
Eth*_*han 10
ldapsearch -LLL -x -h $LDAPHOST -b"dc=whatever" -D${LDAPUSER} -w"${LDAPPASW}" objectclass=* -E pr=2147483647/noprompt
Run Code Online (Sandbox Code Playgroud)
重要的部分在最后:-E pr=2147483647/noprompt
. 我今天实现了这个,所以我知道它可以工作,至少在 Active Directory 的 LDAP 后端。对我来说,这能够绕过服务器限制。
从您的示例来看,您可能缺少 /noprompt 或 /prompt。不同之处在于,使用 /prompt,它会在每个页面之间停止。
我不确定为什么数字 2147483647 有效,但确实如此。
我的来源:http : //www.commandlinefu.com/commands/view/2779/bypass-1000-entry-limit-of-active-directory-with-ldapsearch
小智 8
目录服务器管理员可以自由地限制在对搜索请求的响应中可以返回的条目数。LDAP 客户端可以请求大小限制,但此客户端请求的限制不能覆盖服务器强加的限制。分页工作正常:分页只是发送多个搜索响应,每个响应的大小都是客户端请求的,但仍然不能超过服务器施加的大小限制。虚拟列表视图类似于简单分页,不同之处在于 LDAP 客户端可以在任何地方启动和恢复,而在简单分页结果中,LDAP 客户端必须按顺序读取结果。