ldapsearchを使用したページング


14

すべての意図と目的を変更できないslapd.confによって、現在設定されているサイズ制限500よりもはるかに多くの結果を持つLDAPディレクトリを検索しています)

私のアイデアは、すべての結果が得られるまでldapsearchを実行し続けることですが、毎回異なるオフセット(501、1001など)からでした。

ldapsearchmanページを見ましたが、これは-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)

だから私は試しました: ldapsearch -h $HOST -p $PORT -x -L -b "$BASE" '*' '+' -E pr=$SIZE

ただし、結果(サイズ= 50のページ化された結果など)が500に達した場合、結果がページ化されていない場合と同じエラーが表示されます。

Size limit exceeded (4)

manlistにはvirtuallistviewの別のオプションがありますが、例を見つけることができませんでした。また、私のバージョンのldapsearchにこのオプションがあるとは思いません。

ここでの目標は、ldapsearchと-Lオプションを使用してバックアップを作成し、データベースの復元に適したldifファイルを作成することです。

いくつかのグーグル検索では、私が抱えているのと同じ問題が発生しますが、適用可能な解決策はありません。


loglevel256に設定して、表示される内容を確認することをお勧めします。
クォンタ

私はslapd.confファイルに直接アクセスできません。問題が何であるかを知っているので、より詳細なログはあまり役に立ちません。
スティーブグレゴリー

イーサンへの応答では、2147483647は2 ^ 32、または0b1111111111111111111111111111111です。これは、32ビットの符号付き整数の最大値です。これは最大許容サイズ制限です。
exigent

2147483647 = 2 ^ 31-1
ショーン

回答:


8

ディレクトリサーバー管理者は、検索リクエストへの応答で返されるエントリの数に制限を課すことができます。LDAPクライアントはサイズ制限を要求できますが、このクライアント要求の制限はサーバーが課した制限を上書きできません。ページングは​​正常に機能しています。ページングは​​、クライアントが要求するサイズの複数の検索応答を送信するだけですが、サーバーによって課されるサイズ制限を超えることはできません。仮想リストビューは単純なページングと似ていますが、LDAPクライアントはどこからでも開始および再開できますが、単純なページングされた結果では、LDAPクライアントは結果を順番に読み取る必要があります。


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

重要な部分は最後にあります-E pr=2147483647/noprompt。今日これを実装したので、少なくともActive DirectoryのLDAPバックエンドで動作することがわかりました。私にとって、これはサーバーの制限を回避することができました。

あなたの例から、/ nopromptまたは/ promptが欠落しているように見えます。違いは、/ promptを使用すると、各ページ間で停止することです。

番号2147483647が機能する理由はわかりませんが、機能します。

私のソース:http : //www.commandlinefu.com/commands/view/2779/bypass-1000-entry-limit-of-active-directory-with-ldapsearch


3
数値2147483647はページサイズです。-Eパラメータを変更すると、100個の結果ごとにキーを押すpr=100/promptようにldapsearch求められます。
rpet 14年

動作します!!!!
サヘブ

Active Directoryは、ページ検索がサーバーで構成されたサイズ制限を超えることができるという点で、私の経験では珍しいです。ただし、検索でページサイズの制限が適用されます。ldapsearchにプロンプ​​トを表示しないように指示したため、その検索で実際に使用しているページサイズがはるかに小さいことはわかりません。これは、10年前のSun LDAP、8年前のOpenLDAP、10分前の389-ds(これは私が最近自宅で実行していることです)に対して動作しません。
Ed Grimm

0

ApacheDSは、探しているページ検索を実行できます。少なくともActive Directoryに対して。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.