Estou procurando um diretório LDAP que tenha um número muito maior de resultados do que o sizelimit atualmente definido, 500, pelo slapd.conf que, para todos os efeitos, não pode ser alterado)
Minha idéia era continuar executando o ldapsearch, mas de um deslocamento diferente a cada vez (501, 1001 etc.) até que todos os resultados fossem obtidos.
Eu vi as páginas de manual do ldapsearch e parece que isso é tratado por você usando as opções -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)
Então eu tentei:
ldapsearch -h $HOST -p $PORT -x -L -b "$BASE" '*' '+' -E pr=$SIZE
No entanto, quando os resultados (mesmo resultados paginados com tamanho = 50, por exemplo) atingem 500, recebo o mesmo erro como se os resultados não fossem paginados:
Size limit exceeded (4)
Eu vi nas páginas do manual que há outra opção para o virtuallistview, mas não consegui encontrar exemplos para ele, e também não acho que minha versão do ldapsearch tenha essa opção.
O objetivo aqui é criar um backup usando ldapsearch e a opção -L para criar um arquivo ldif adequado para restaurar o banco de dados.
Algumas pesquisas no Google aparecem com o mesmo problema que estou tendo, mas nenhuma tem uma solução aplicável.
loglevel
256 para ver o que diz.Respostas:
O administrador do servidor de diretórios pode impor um limite ao número de entradas que podem ser retornadas na resposta a uma solicitação de pesquisa. O cliente LDAP pode solicitar um limite de tamanho, mas esse limite solicitado pelo cliente não pode substituir o limite imposto pelo servidor. A paginação está funcionando corretamente: a paginação simplesmente envia várias respostas de pesquisa, cada uma com o tamanho solicitado pelo cliente, mas ainda não pode exceder o limite de tamanho imposto pelo servidor. A Visualização de lista virtual é semelhante à paginação simples, exceto que o cliente LDAP pode iniciar e retomar em qualquer lugar, enquanto que em resultados paginados simples, o cliente LDAP deve ler os resultados sequencialmente.
fonte
A parte importante é no final:
-E pr=2147483647/noprompt
. Eu implementei isso hoje, por isso sei que funciona, pelo menos com o back-end LDAP do Active Directory. Para mim, isso foi capaz de ignorar os limites do servidor.No seu exemplo, parece que você está perdendo um / noprompt ou / prompt. A diferença é que, com / prompt, ele pára entre cada página.
Não sei por que o número 2147483647 funciona, mas funciona.
Minha fonte: http://www.commandlinefu.com/commands/view/2779/bypass-1000-entry-limit-of-active-directory-with-ldapsearch
fonte
2147483647
é o tamanho da página. Se você alterar o-E
parâmetro parapr=100/prompt
, verá queldapsearch
você deve pressionar uma tecla a cada 100 resultados.O ApacheDS pode fazer as pesquisas paginadas que você está procurando. Pelo menos no Active Directory.
fonte