Przywoływanie za pomocą ldapsearch

14

Przeszukuję katalog LDAP, który ma znacznie większą liczbę wyników niż obecnie ustawiony sizelimit, 500, przez slapd.conf, którego we wszystkich celach i celach nie można zmienić)

Moim pomysłem było ciągłe uruchamianie ldapsearch, ale za każdym razem z innego przesunięcia (501, 1001 itd.), Aż do uzyskania wszystkich wyników.

Widziałem strony podręcznika dla ldapsearch i wygląda na to, że jest to obsługiwane przez opcje -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)

Więc próbowałem: ldapsearch -h $HOST -p $PORT -x -L -b "$BASE" '*' '+' -E pr=$SIZE

Jednak gdy wyniki (na przykład wyniki stronicowane o rozmiarze = 50) osiągną wartość 500, pojawia się ten sam błąd, jakby wyniki nie były stronicowane:

Size limit exceeded (4)

Widziałem na stronach podręcznika, że ​​istnieje inna opcja wirtualnego podglądu, ale nie byłem w stanie znaleźć jej przykładów, a także nie sądzę, że moja wersja ldapsearch ma tę opcję.

Celem jest tutaj utworzenie kopii zapasowej za pomocą ldapsearch i opcji -L w celu utworzenia pliku ldif, który jest odpowiedni do przywrócenia bazy danych.

Kilka wyszukiwań w Google pokazuje ten sam problem, który mam, ale żadne nie ma odpowiedniego rozwiązania.

Steve-Gregory
źródło
Sugeruję ustawienie loglevel256, aby zobaczyć, co mówi.
kwanty
Nie mam bezpośredniego dostępu do pliku slapd.conf i wiem, na czym polega problem, więc bardziej szczegółowy dziennik nie będzie przydatny.
steve-gregory
W odpowiedzi na Ethana 2147483647 to 2 ^ 32 lub 0b1111111111111111111111111111111. Jest to maksymalny poziom 32-bitowego znaku int. Jest to maksymalny dozwolony rozmiar.
wymagający
2147483647 = 2 ^ 31-1
Sean

Odpowiedzi:

8

Administrator serwera katalogów może narzucić ograniczenie liczby wpisów, które mogą zostać zwrócone w odpowiedzi na żądanie wyszukiwania. Klient LDAP może zażądać limitu rozmiaru, ale ten limit żądany przez klienta nie może zastąpić limitu narzuconego przez serwer. Przywoływanie działa poprawnie: przywoływanie po prostu wysyła wiele odpowiedzi wyszukiwania, z których każda ma rozmiar żądany przez klienta, ale nadal nie może przekroczyć limitu rozmiaru narzuconego przez serwer. Widok listy wirtualnych jest podobny do prostego stronicowania, z tym wyjątkiem, że klient LDAP może być uruchamiany i wznawiany w dowolnym miejscu, natomiast w przypadku prostych wyników stronicowanych klient LDAP musi sekwencyjnie czytać wyniki.

Terry Gardner
źródło
10
ldapsearch -LLL  -x -h $LDAPHOST -b"dc=whatever" -D${LDAPUSER} -w"${LDAPPASW}" objectclass=* -E pr=2147483647/noprompt

Ważną częścią jest na końcu: -E pr=2147483647/noprompt. Zaimplementowałem to dzisiaj, więc wiem, że to działa, przynajmniej z zapleczem LDAP Active Directory. Dla mnie było to w stanie ominąć ograniczenia serwera.

Z twojego przykładu wygląda na to, że brakuje Ci znaku zachęty / noprompt lub /. Różnica polega na tym, że przy pomocy / prompt zatrzymuje się między każdą stroną.

Nie jestem pewien, dlaczego numer 2147483647 działa, ale działa.

Moje źródło: http://www.commandlinefu.com/commands/view/2779/bypass-1000-entry-limit-of-active-directory-with-ldapsearch

Ethan
źródło
3
Liczba 2147483647to rozmiar strony. Jeśli zmienisz -Eparametr pr=100/prompt, zobaczysz, że ldapsearchmożesz nacisnąć klawisz co 100 wyników.
rpet
To działa !!!!
Saheb
Z mojego doświadczenia wynika, że ​​usługa Active Directory pozwala na wyszukiwanie stronicowane poza limit wielkości skonfigurowany na serwerze. Wymusi to jednak ograniczenie rozmiaru stronicowania podczas wyszukiwania. Ponieważ powiedziałeś ldapsearch, aby nie monitował, nie widzisz, że rozmiar strony, którego faktycznie używa do tego wyszukiwania, jest znacznie mniejszy. To nie zadziała przeciwko Sun LDAP 10 lat temu, OpenLDAP 8 lat temu lub 389-ds 10 dni temu (to właśnie teraz uruchamiam w domu.)
Ed Grimm
0

ApacheDS może wyszukiwać strony, których szukasz. Przynajmniej przeciwko Active Directory.

geoffc
źródło