Я ищу каталог 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)
Я видел на страницах руководства, что есть еще один вариант для virtuallistview, но я не смог найти примеры для него, и я также не думаю, что моя версия ldapsearch имеет такую возможность.
Цель здесь - создать резервную копию, используя ldapsearch и опцию -L, чтобы создать файл ldif, подходящий для восстановления базы данных.
Несколько поисков в Google отображаются с той же проблемой, что и у меня, но ни у одного нет подходящего решения ..
loglevel
256, чтобы увидеть, что он говорит.Ответы:
Администратор сервера каталогов может наложить ограничение на количество записей, которые могут быть возвращены в ответ на запрос поиска. Клиент LDAP может запросить ограничение размера, но это запрошенное клиентом ограничение не может переопределить ограничение, наложенное сервером. Пейджинг работает правильно: пейджинг просто отправляет несколько поисковых запросов, каждый из которых соответствует размеру, запрошенному клиентом, но все же не может превышать ограничение размера, установленное сервером. Представление виртуального списка аналогично простому разбиению по страницам, за исключением того, что клиент LDAP может запускаться и возобновляться где угодно, тогда как в простых постраничных результатах клиент LDAP должен последовательно просматривать результаты.
источник
Важная часть в конце:
-E pr=2147483647/noprompt
. Я реализовал это сегодня, так что я знаю, что это работает, по крайней мере, с бэкэндом LDAP Active Directory. Для меня это было в состоянии обойти ограничения сервера.Из вашего примера похоже, что вы можете пропустить / noprompt или / prompt. Разница в том, что с / prompt, он останавливается между каждой страницей.
Я не уверен, почему номер 2147483647 работает, но это работает.
Мой источник: http://www.commandlinefu.com/commands/view/2779/bypass-1000-entry-limit-of-active-directory-with-ldapsearch
источник
2147483647
- это размер страницы. Если вы измените-E
параметр наpr=100/prompt
вас, вы увидите, чтоldapsearch
вам нужно нажимать клавишу каждые 100 результатов.ApacheDS может выполнять поиск по страницам, который вы ищете. По крайней мере, против Active Directory.
источник