Estoy buscando un directorio LDAP que tenga un número de resultados mucho mayor que el sizelimit establecido actualmente, 500, por slapd.conf que para todos los intentos y propósitos no se puede cambiar)
Mi idea era seguir ejecutando ldapsearch pero desde un desplazamiento diferente cada vez (501, 1001, etc.) hasta que se hayan obtenido todos los resultados.
He visto las páginas de manual para ldapsearch , y parece que esto se maneja usando las opciones -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)
Entonces intenté:
ldapsearch -h $HOST -p $PORT -x -L -b "$BASE" '*' '+' -E pr=$SIZE
Sin embargo, cuando los resultados (incluso los resultados paginados con tamaño = 50, por ejemplo) llegan a 500, aparece el mismo error que si los resultados no se paginasen:
Size limit exceeded (4)
He visto en las páginas del manual que hay otra opción para virtuallistview, pero no he podido encontrar ejemplos, y tampoco creo que mi versión de ldapsearch tenga esta opción.
El objetivo aquí es crear una copia de seguridad usando ldapsearch y la opción -L para crear un archivo ldif que sea adecuado para restaurar la base de datos.
Algunas búsquedas en Google aparecen con el mismo problema que tengo, pero ninguna tiene una solución aplicable.
loglevel
a 256 para ver lo que dice.Respuestas:
El administrador del servidor de directorio es libre de imponer un límite en el número de entradas que se pueden devolver en la respuesta a una solicitud de búsqueda. El cliente LDAP puede solicitar un límite de tamaño, pero este límite solicitado por el cliente no puede anular el límite impuesto por el servidor. La paginación funciona correctamente: la paginación simplemente envía múltiples respuestas de búsqueda, cada una del tamaño solicitado por el cliente, pero aún no puede exceder el límite de tamaño impuesto por el servidor. La Vista de lista virtual es similar a la paginación simple, excepto que el cliente LDAP puede iniciarse y reanudarse en cualquier lugar, mientras que en resultados paginados simples, el cliente LDAP debe leer los resultados secuencialmente.
fuente
La parte importante es al final:
-E pr=2147483647/noprompt
. Implementé esto hoy, así que sé que funciona, al menos con el back-end LDAP de Active Directory. Para mí, esto fue capaz de eludir los límites del servidor.Según su ejemplo, parece que le puede faltar un / noprompt o / prompt. La diferencia es que con / prompt, se detiene entre cada página.
No estoy seguro de por qué funciona el número 2147483647, pero lo hace.
Mi fuente: http://www.commandlinefu.com/commands/view/2779/bypass-1000-entry-limit-of-active-directory-with-ldapsearch
fuente
2147483647
es el tamaño de la página. Si cambia el-E
parámetro apr=100/prompt
, verá queldapsearch
le permite presionar una tecla cada 100 resultados.ApacheDS puede hacer las búsquedas buscadas que está buscando. Al menos contra Active Directory.
fuente