Paging mit ldapsearch

14

Ich suche ein LDAP-Verzeichnis, das eine viel größere Anzahl von Ergebnissen als das derzeit festgelegte Größenlimit (500) von slapd.conf enthält und das in jeder Hinsicht nicht geändert werden kann.

Meine Idee war, ldapsearch weiterhin auszuführen, aber jedes Mal von einem anderen Offset (501, 1001 usw.), bis alle Ergebnisse erzielt wurden.

Ich habe die Manpages für ldapsearch gesehen und es sieht so aus , als ob dies für Sie mit den -E-Optionen erledigt wird:

-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)

Also habe ich versucht: ldapsearch -h $HOST -p $PORT -x -L -b "$BASE" '*' '+' -E pr=$SIZE

Wenn jedoch die Ergebnisse (auch Seitenergebnisse mit einer Größe von 50) 500 ergeben, erhalte ich den gleichen Fehler, als ob die Ergebnisse nicht Seiten enthalten würden:

Size limit exceeded (4)

Ich habe in den Manpages gesehen, dass es eine andere Option für die Virtuallistenansicht gibt, konnte aber keine Beispiele dafür finden, und ich glaube auch nicht, dass meine Version von ldapsearch diese Option hat.

Ziel ist es, eine Sicherung mit ldapsearch und der Option -L zu erstellen, um eine ldif-Datei zu erstellen, die zum Wiederherstellen der Datenbank geeignet ist.

Einige Google-Suchanfragen zeigen dasselbe Problem, das ich habe, aber keine hat eine anwendbare Lösung.

Steve-Gregory
quelle
Ich würde vorschlagen, dass Sie loglevel256 einstellen, um zu sehen, was es sagt.
Quanten
Ich habe keinen direkten Zugriff auf die Datei slapd.conf, und ich weiß, was das Problem ist, sodass ein ausführlicheres Protokoll nicht viel nützt.
Steve-Gregory
In Reaktion auf Ethan ist 2147483647 2 ^ 32 oder 0b111111111111111111111111111111111. Dies ist die Maxime für ein 32-Bit-Int. Dies ist die maximal zulässige Größenbeschränkung.
Exigent
2147483647 = 2 ^ 31-1
Sean

Antworten:

8

Es steht dem Directory Server-Administrator frei, die Anzahl der Einträge zu begrenzen, die in der Antwort auf eine Suchanforderung zurückgegeben werden können. Der LDAP-Client kann ein Größenlimit anfordern, dieses vom Client angeforderte Limit kann jedoch das vom Server festgelegte Limit nicht überschreiben. Das Paging funktioniert ordnungsgemäß: Das Paging sendet einfach mehrere Suchantworten, von denen jede die vom Client angeforderte Größe aufweist, die vom Server festgelegte Größenbeschränkung jedoch nicht überschreiten kann. Die Ansicht der virtuellen Liste ähnelt dem einfachen Paging, mit der Ausnahme, dass der LDAP-Client an einer beliebigen Stelle gestartet und fortgesetzt werden kann, wohingegen der LDAP-Client bei einfach ausgelagerten Ergebnissen die Ergebnisse nacheinander lesen muss.

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

Der wichtigste Teil ist am Ende: -E pr=2147483647/noprompt. Ich habe dies heute implementiert und weiß, dass es funktioniert, zumindest mit dem LDAP-Backend von Active Directory. Für mich war dies in der Lage, Servergrenzen zu umgehen.

In Ihrem Beispiel fehlt möglicherweise eine / noprompt- oder / -Aufforderung. Der Unterschied besteht darin, dass mit / prompt zwischen den einzelnen Seiten angehalten wird.

Ich bin nicht sicher, warum die Nummer 2147483647 funktioniert, aber es funktioniert.

Meine Quelle: http://www.commandlinefu.com/commands/view/2779/bypass-1000-entry-limit-of-active-directory-with-ldapsearch

Ethan
quelle
3
Die Nummer 2147483647ist die Seitengröße. Wenn Sie den -EParameter auf ändern , pr=100/promptwerden ldapsearchSie aufgefordert, alle 100 Ergebnisse eine Taste zu drücken.
rpet
Das funktioniert !!!!
Saheb
Active Directory ist meiner Erfahrung nach insofern ungewöhnlich, als ausgelagerte Suchen die vom Server konfigurierte Größenbeschränkung überschreiten. Es wird jedoch die Größenbeschränkung für die Suche durchgesetzt. Da Sie ldapsearch angewiesen haben, Sie nicht dazu aufzufordern, stellen Sie nicht fest, dass die tatsächlich für diese Suche verwendete Seitengröße viel kleiner ist. Dies funktioniert nicht mehr gegen Sun LDAP vor 10 Jahren, OpenLDAP vor 8 Jahren oder 389-ds vor 10 Minuten (das ist, was ich in diesen Tagen zu Hause laufe.)
Ed Grimm
0

ApacheDS kann die von Ihnen gesuchten Seiten durchsuchen. Zumindest gegen Active Directory.

geoffc
quelle