Назад | Перейти на главную страницу

Пейджинг с использованием ldapsearch

Я ищу каталог LDAP, который имеет гораздо большее количество результатов, чем установленный в настоящее время предел размера, 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 обнаруживают ту же проблему, что и я, но ни у одного нет подходящего решения.

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

Важная часть в конце: -E pr=2147483647/noprompt. Я реализовал это сегодня, поэтому знаю, что он работает, по крайней мере, с серверной частью LDAP Active Directory. Для меня это позволило обойти ограничения сервера.

В вашем примере похоже, что вам может не хватать приглашения / noprompt или /. Разница в том, что с приглашением / он останавливается между каждой страницей.

Я не уверен, почему работает номер 2147483647, но он работает.

Мой источник: http://www.commandlinefu.com/commands/view/2779/bypass-1000-entry-limit-of-active-directory-with-ldapsearch

Администратор сервера каталогов вправе установить ограничение на количество записей, которые могут быть возвращены в ответ на поисковый запрос. Клиент LDAP может запросить ограничение размера, но это запрошенное клиентом ограничение не может переопределить ограничение, установленное сервером. Пейджинг работает правильно: пейджинг просто отправляет несколько ответов на поиск, каждый из которых имеет размер, запрошенный клиентом, но по-прежнему не может превышать ограничение размера, установленное сервером. Просмотр виртуального списка аналогичен простому разбиению на страницы, за исключением того, что клиент LDAP может запускаться и возобновлять работу где угодно, тогда как в простых результатах с разбивкой по страницам клиент LDAP должен читать результаты последовательно.

ApacheDS может выполнять поиск по страницам, который вы ищете. По крайней мере, против Active Directory.