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 ..

steve-gregory
sumber
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.

Terry Gardner
sumber
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

Ethan
sumber
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.

geoffc
sumber