Paging menggunakan ldapsearch


14

Saya mencari direktori LDAP yang memiliki jumlah hasil yang jauh lebih besar daripada sizelimit yang saat ini ditetapkan, 500, oleh slapd.conf yang untuk semua maksud dan tujuan tidak dapat diubah)

Gagasan saya adalah tetap menjalankan ldapsearch tetapi dari offset yang berbeda setiap kali (501, 1001, dll.) Sampai semua hasil telah diperoleh.

Saya telah melihat halaman manual untuk ldapsearch , dan tampaknya ini ditangani untuk Anda menggunakan opsi -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)

Jadi saya mencoba: ldapsearch -h $HOST -p $PORT -x -L -b "$BASE" '*' '+' -E pr=$SIZE

Namun ketika hasil (bahkan hasil halaman dengan ukuran = 50 misalnya) mencapai 500, saya mendapatkan kesalahan yang sama seolah-olah hasilnya tidak halaman:

Size limit exceeded (4)

Saya telah melihat di halaman manual ada pilihan lain untuk virtuallistview tetapi tidak dapat menemukan contoh untuk itu, dan juga saya tidak berpikir versi ldapsearch saya memiliki opsi ini.

Tujuannya di sini adalah untuk membuat cadangan menggunakan ldapsearch dan opsi -L untuk membuat file ldif yang cocok untuk memulihkan database.

Beberapa pencarian Google muncul dengan masalah yang sama dengan yang saya alami, tetapi tidak ada yang memiliki solusi yang berlaku ..


Saya sarankan Anda mengatur loglevelke 256 untuk melihat apa yang dikatakannya.
quanta

Saya tidak memiliki akses langsung ke file slapd.conf, dan saya tahu apa masalahnya sehingga log yang lebih verbose tidak akan banyak berguna.
steve-gregory

Menanggapi Ethan, 2147483647 adalah 2 ^ 32, atau 0b111111111111111111111111111111111. Ini adalah maximim untuk int yang ditandatangani 32-bit. Ini adalah batas ukuran maksimum yang diijinkan.
exigent

2147483647 = 2 ^ 31-1
Sean

Jawaban:


8

Administrator server direktori bebas untuk memberlakukan batasan pada jumlah entri yang dapat dikembalikan sebagai respons terhadap permintaan pencarian. Klien LDAP dapat meminta batas ukuran, tetapi batas yang diminta klien ini tidak dapat mengesampingkan batas yang ditentukan server. Paging bekerja dengan benar: paging hanya mengirim beberapa respons pencarian, masing-masing ukuran yang diminta oleh klien, tetapi masih tidak dapat melebihi batas ukuran yang ditentukan oleh server. Tampilan daftar Virtual mirip dengan paging sederhana, kecuali bahwa klien LDAP dapat memulai dan melanjutkan di mana saja, sedangkan dalam hasil halaman sederhana, klien LDAP harus membaca hasil secara berurutan.


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

Bagian yang penting adalah di akhir: -E pr=2147483647/noprompt. Saya menerapkan ini hari ini, jadi saya tahu itu berfungsi, setidaknya dengan backend LDAP Direktori Aktif. Bagi saya, ini dapat melewati batas server.

Dari contoh Anda, sepertinya Anda mungkin melewatkan / noprompt atau / prompt. Perbedaannya adalah bahwa dengan / prompt, ia berhenti di antara setiap halaman.

Saya tidak yakin mengapa angka 2147483647 berfungsi, tetapi ternyata berhasil.

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


3
Jumlahnya 2147483647adalah ukuran halaman. Jika Anda mengubah -Eparameter ke pr=100/promptAnda akan melihat bahwa ldapsearchaks Anda menekan tombol setiap 100 hasil.
membunyikan

Itu bekerja !!!!
Saheb

Active Directory tidak biasa dalam pengalaman saya karena memungkinkan pencarian paged melebihi batas ukuran server yang dikonfigurasi. Namun, itu akan memberlakukan batas ukuran halaman pada pencarian. Karena Anda telah mengatakan ldapsearch untuk tidak meminta Anda, Anda tidak melihat bahwa ukuran halaman yang sebenarnya digunakan untuk pencarian itu jauh lebih kecil. Ini tidak akan bekerja melawan Sun LDAP pada 10 tahun yang lalu, OpenLDAP pada 8 tahun yang lalu, atau 389-ds pada 10 menit yang lalu (itulah yang saya jalankan di rumah hari ini.)
Ed Grimm

0

ApacheDS dapat melakukan pencarian halaman yang Anda cari. Paling tidak terhadap Active Directory.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.