Je recherche un annuaire LDAP qui a un nombre de résultats beaucoup plus important que le sizelimit actuellement défini, 500, par slapd.conf qui, à toutes fins utiles, ne peut pas être modifié)
Mon idée était de continuer à exécuter ldapsearch mais à partir d'un décalage différent à chaque fois (501, 1001, etc.) jusqu'à ce que tous les résultats soient obtenus.
J'ai vu les pages de manuel de ldapsearch , et il semble que cela soit géré pour vous en utilisant les options -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)
J'ai donc essayé:
ldapsearch -h $HOST -p $PORT -x -L -b "$BASE" '*' '+' -E pr=$SIZE
Cependant, lorsque les résultats (même les résultats paginés avec taille = 50 par exemple) atteignent 500, j'obtiens la même erreur que si les résultats n'étaient pas paginés:
Size limit exceeded (4)
J'ai vu dans les pages de manuel qu'il existe une autre option pour virtuallistview mais je n'ai pas pu trouver d'exemples pour cela, et je ne pense pas que ma version de ldapsearch ait cette option.
L'objectif ici est de créer une sauvegarde à l'aide de ldapsearch et de l'option -L pour créer un fichier ldif adapté à la restauration de la base de données.
Quelques recherches sur google présentent le même problème que moi, mais aucune n'a de solution applicable.
loglevel
à 256 pour voir ce qu'il dit.Réponses:
L'administrateur du serveur d'annuaire est libre d'imposer une limite au nombre d'entrées pouvant être renvoyées dans la réponse à une demande de recherche. Le client LDAP peut demander une limite de taille, mais cette limite demandée par le client ne peut pas remplacer la limite imposée par le serveur. La pagination fonctionne correctement: la pagination envoie simplement plusieurs réponses de recherche, chacune de la taille demandée par le client, mais ne peut toujours pas dépasser la limite de taille imposée par le serveur. La vue de liste virtuelle est similaire à la pagination simple, sauf que le client LDAP peut démarrer et reprendre n'importe où, tandis que dans les résultats paginés simples, le client LDAP doit lire les résultats de manière séquentielle.
la source
La partie importante est à la fin:
-E pr=2147483647/noprompt
. J'ai implémenté cela aujourd'hui, donc je sais que cela fonctionne, au moins avec le backend LDAP d'Active Directory. Pour moi, cela a pu contourner les limites du serveur.D'après votre exemple, il semble qu'il vous manque un / noprompt ou / prompt. La différence est qu'avec / prompt, il s'arrête entre chaque page.
Je ne sais pas pourquoi le numéro 2147483647 fonctionne, mais c'est le cas.
Ma source: http://www.commandlinefu.com/commands/view/2779/bypass-1000-entry-limit-of-active-directory-with-ldapsearch
la source
2147483647
est la taille de la page. Si vous changez le-E
paramètre enpr=100/prompt
vous verrez queldapsearch
vous demande d'appuyer sur une touche tous les 100 résultats.ApacheDS peut effectuer les recherches paginées que vous recherchez. Au moins contre Active Directory.
la source