Пейджинг за допомогою ldapsearch


14

Я шукаю каталог 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, але я не зміг знайти приклади для цього, а також не думаю, що моя версія ldapsearch має такий варіант.

Мета тут - створити резервну копію за допомогою ldapsearch та опцією -L створити файл ldif, який підходить для відновлення бази даних.

Декілька пошуків Google виявляють ту саму проблему, що і у мене, але жоден не має застосовного рішення.


Я б запропонував вам встановити loglevel256, щоб побачити, що це говорить.
кванта

У мене немає прямого доступу до файлу slapd.conf, і я знаю, в чому проблема, тому більш багатослівний журнал не принесе великої користі.
steve-gregory

У відповідь на Етана 2147483647 є 2 ^ 32, або 0b1111111111111111111111111111111111. Це максимальне значення для 32-бітного підписаного int. Це гранично допустимий розмір.
очікуваний

2147483647 = 2 ^ 31-1
Шон

Відповіді:


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. Я реалізував це сьогодні, тому знаю, що це працює, принаймні, із резервним пакетом LDAP Active Directory. Для мене це вдалося обійти ліміти сервера.

З вашого прикладу, схоже, у вас може бути відсутнім / noprompt або / 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

Це працює !!!!
Сахеб

Активний каталог незвичний у моєму досвіді тим, що він дозволяє печати пошукових пошуків перевищувати встановлений на сервері обмеження розміру. Однак, він буде застосовувати обмежений розмір сторінки для пошукових запитів. Оскільки ви сказали ldapsearch не підказувати вас, ви не бачите, що розмір сторінки, який він насправді використовує для цього пошуку, набагато менший. Це не буде працювати проти Sun LDAP станом на 10 років тому, OpenLDAP 8 років тому, або 389 дюймів станом на 10 хвилин тому (ось що я бігаю вдома в ці дні.)
Ед Грімм

0

ApacheDS може робити пошукові сторінки, які ви шукаєте. Принаймні, проти Active Directory.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.