我正在search一个LDAP目录,该目录的结果数量比当前设置的sizelimit的数量多得多,500,通过slapd.conf,所有的意图和目的都不能改变)
我的想法是继续运行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)
所以我试了: ldapsearch -h $HOST -p $PORT -x -L -b "$BASE" '*' '+' -E pr=$SIZE
然而,当结果(即使是大小为50的分页结果)达到500时,我也会得到同样的错误,就好像结果没有分页一样:
Size limit exceeded (4)
我已经看到在man页面中有virtuallistview的另一个选项,但一直无法find它的例子,以及我不认为我的版本的ldapsearch有这个选项。
这里的目标是使用ldapsearch和-L选项来创build一个适合于恢复数据库的ldif文件。
几个谷歌search显示与我有同样的问题,但没有一个适用的解决scheme..
目录服务器pipe理员可以对search请求的响应中可以返回的条目数量施加限制。 LDAP客户端可以请求大小限制,但是这个客户端请求的限制不能覆盖服务器限制。 分页工作正常:分页只是发送多个search响应,每个search响应都是客户端请求的大小,但仍然不能超过服务器施加的大小限制。 虚拟列表视图与简单分页类似,不同之处在于LDAP客户端可以在任何地方启动和恢复,而在简单的分页结果中,LDAP客户端必须依次读取结果。
ldapsearch -LLL -x -h $LDAPHOST -b"dc=whatever" -D${LDAPUSER} -w"${LDAPPASW}" objectclass=* -E pr=2147483647/noprompt
最后的重要部分是: -E pr=2147483647/noprompt 。 我今天实现了这一点,所以我知道它起作用,至less在Active Directory的LDAP后端。 对我来说,这是能够绕过服务器的限制。
从你的例子看来,你可能会错过一个/ noprompt或/提示符。 不同的是,使用/ prompt,它会在每个页面之间停止。
我不知道为什么数字2147483647工作,但它确实。
我的来源: http : //www.commandlinefu.com/commands/view/2779/bypass-1000-entry-limit-of-active-directory-with-ldapsearch
ApacheDS可以执行您正在寻找的分页search。 至less针对Active Directory。