Ldapsearch kullanarak sayfalama


14

Slapd.conf tarafından şu anda ayarlanmış olan sizelimit 500'den çok daha fazla sayıda sonuç içeren bir LDAP dizinini tüm amaç ve amaçlar için değiştirilemediğini arıyorum)

Benim fikrim, ldapsearch çalıştırmaya devam etmekti, ancak tüm sonuçlar elde edilene kadar her seferinde (501, 1001, vb.) Farklı bir ofsetten.

Ldapsearch için man sayfalarını gördüm ve bunun sizin için -E seçeneklerini kullanarak işlendiği anlaşılıyor:

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

Bu yüzden denedim: ldapsearch -h $HOST -p $PORT -x -L -b "$BASE" '*' '+' -E pr=$SIZE

Ancak sonuçlar (örneğin boyut = 50 ile sayfalandırılmış sonuçlar bile) 500'e ulaştığında, sonuçların sayfalandırılmadığı gibi aynı hatayı alıyorum:

Size limit exceeded (4)

Man sayfalarında virtuallistview için başka bir seçenek olduğunu gördüm, ancak bunun için örnekler bulamadım ve ldapsearch sürümümün bu seçeneği olduğunu düşünmüyorum.

Buradaki amaç, ldapsearch kullanarak bir yedekleme oluşturmak ve veritabanını geri yüklemek için uygun bir ldif dosyası oluşturmak için -L seçeneğini oluşturmaktır.

Birkaç google arama aynı sorun ile ortaya çıkıyor, ama hiçbiri uygulanabilir bir çözüm var ..


loglevelNe yazdığını görmek için 256'ya ayarlamanızı öneririm .
quanta

Slapd.conf dosyasına doğrudan erişimim yok ve sorunun ne olduğunu biliyorum, bu yüzden daha ayrıntılı bir günlük çok fazla kullanılmayacak.
steve-gregory

Ethan'a yanıt olarak 2147483647, 2 ^ 32 veya 0b1111111111111111111111111111111'dir. Bu, 32 bit imzalı bir int için maksimimdir. Bu, izin verilen maksimum boyut sınırıdır.
zorlayıcı

2147483647 = 2 ^ 31-1
Sean

Yanıtlar:


8

Dizin sunucusu yöneticisi, bir arama isteğine yanıt olarak döndürülebilecek giriş sayısı için bir sınır koyabilir. LDAP istemcisi bir boyut sınırı isteyebilir, ancak istemciden istenen bu sınır sunucu tarafından belirlenen sınırı geçersiz kılamaz. Disk belleği düzgün çalışıyor: disk belleği, her biri istemcinin istediği boyutta birden çok arama yanıtı gönderir, ancak yine de sunucu tarafından belirlenen boyut sınırını aşamaz. Sanal liste görünümü basit sayfalamaya benzer, tek fark LDAP istemcisinin herhangi bir yerde başlayıp devam edebilmesidir, oysa basit sayfalanmış sonuçlarda LDAP istemcisinin sonuçları sırayla okuması gerekir.


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

Önemli bir parçası sonunda: -E pr=2147483647/noprompt. Bunu bugün uyguladım, bu yüzden en azından Aktif Direktör'ün LDAP arka ucunda işe yaradığını biliyorum. Benim için bu sunucu sınırlarını aşabildi.

Örneğinizde, / noprompt veya / istemi eksik olabilirsiniz. Aradaki fark, / istem ile her sayfa arasında durmasıdır.

2147483647 sayısının neden çalıştığından emin değilim, ama işe yarıyor.

Kaynağım: http://www.commandlinefu.com/commands/view/2779/bypass-1000-entry-limit-of-active-directory-with-ldapsearch


3
Sayı 2147483647, sayfa boyutudur. -EParametreyi değiştirirseniz, her 100 sonuçta bir tuşa basmanız pr=100/promptgerektiğini göreceksiniz ldapsearch.
rpet

Bu çalışır !!!!
Saheb

Active Directory, sıralı aramaların sunucu tarafından yapılandırılmış boyut sınırını aşmasına izin verdiği için benim deneyimime göre sıra dışı. Ancak, aramalarda disk belleği boyut sınırını zorlar. Ldapsearch'e sizden istememesini söylemiş olduğunuz için, söz konusu arama için aslında kullandığı sayfa boyutunun çok daha küçük olduğunu görmüyorsunuz. Olarak 10 yıl önce Güneş LDAP, OpenLDAP karşı bu olmaz eser 8 yıl itibariyle önce veya 389-ds 10 dakika önce itibariyle (yani Bugünlerde evde ne çalıştırmak en.)
Ed Grimm

0

ApacheDS aradığınız sayfalandırılmış aramaları yapabilir. En azından Active Directory'ye karşı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.