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.
loglevel
256, aby zobaczyć, co mówi.Odpowiedzi:
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.
źródło
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
źródło
2147483647
to rozmiar strony. Jeśli zmienisz-E
parametrpr=100/prompt
, zobaczysz, żeldapsearch
możesz nacisnąć klawisz co 100 wyników.ApacheDS może wyszukiwać strony, których szukasz. Przynajmniej przeciwko Active Directory.
źródło