使用ldapsearch进行分页


14

我正在通过slapd.conf搜索一个结果数量比当前设置的sizelimit大得多的LDAP目录,因为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)

我已经在手册页中看到了virtuallistview的另一种选择,但一直无法找到示例,而且我也不认为我的ldapsearch版本具有该选项。

此处的目标是使用ldapsearch和-L选项创建备份,以创建适合于还原数据库的ldif文件。

少数Google搜索出现与我相同的问题,但没有一个适用的解决方案。


我建议您将其设置loglevel为256以查看其内容。
量子

我没有直接访问slapd.conf文件的权限,而且我知道问题出在哪里,所以冗长的日志将无济于事。
史蒂夫·格雷戈里

响应Ethan,2147483647是2 ^ 32或0b1111111111111111111111111111111。这是32位有符号整数的最大值。这是最大允许大小限制。
紧急

2147483647 = 2 ^ 31-1
肖恩

Answers:


8

目录服务器管理员可以对搜索请求的响应中可以返回的条目数施加限制。LDAP客户端可以请求大小限制,但是此客户端请求的限制不能覆盖服务器施加的限制。分页正常工作:分页仅发送多个搜索响应,每个搜索响应的大小由客户端请求,但仍不能超过服务器施加的大小限制。虚拟列表视图类似于简单分页,不同之处在于LDAP客户端可以在任何地方启动和恢复,而在简单分页的结果中,LDAP客户端必须顺序读取结果。


10
ldapsearch -LLL  -x -h $LDAPHOST -b"dc=whatever" -D${LDAPUSER} -w"${LDAPPASW}" objectclass=* -E pr=2147483647/noprompt

重要的部分在最后:-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


3
数字2147483647是页面大小。如果将-E参数更改为pr=100/prompt,则ldapsearch每100个结果会提示您按一个键。
rpet

这样可行 !!!!
萨希卜(Saheb)

根据我的经验,Active Directory是不寻常的,因为它允许分页搜索超过服务器配置的大小限制。但是,它将对搜索强制执行页面大小限制。因为您已经告诉ldapsearch不要提示您,所以您没有看到它实际用于搜索的页面大小要小得多。这会不会对孙LDAP作为10年前,OpenLDAP的工作作为8年前,或者389-DS为10分钟前(这是我在家里这些天运行。)
埃德格林

0

ApacheDS可以执行您要查找的分页搜索。至少针对Active Directory。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.