Phân trang bằng ldapsearch


14

Tôi đang tìm kiếm một thư mục LDAP có số lượng kết quả lớn hơn nhiều so với siz006it hiện được đặt, bởi slapd.conf rằng tất cả các ý định và mục đích không thể thay đổi)

Ý tưởng của tôi là tiếp tục chạy ldapsearch nhưng từ một mức bù khác nhau mỗi lần (501, 1001, v.v.) cho đến khi thu được tất cả các kết quả.

Tôi đã thấy các trang man cho ldapsearch và có vẻ như điều này được xử lý cho bạn bằng cách sử dụng các tùy chọn -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)

Vì vậy, tôi đã cố gắng: ldapsearch -h $HOST -p $PORT -x -L -b "$BASE" '*' '+' -E pr=$SIZE

Tuy nhiên, khi kết quả (thậm chí kết quả phân trang có kích thước = 50 chẳng hạn) đạt 500, tôi gặp lỗi tương tự như khi kết quả không được phân trang:

Size limit exceeded (4)

Tôi đã thấy trong các trang man có một tùy chọn khác cho virtuallistview nhưng không thể tìm thấy các ví dụ cho nó, và tôi cũng không nghĩ rằng phiên bản ldapsearch của tôi có tùy chọn này.

Mục tiêu ở đây là tạo một bản sao lưu bằng ldapsearch và tùy chọn -L để tạo một tệp ldif phù hợp để khôi phục cơ sở dữ liệu.

Một vài tìm kiếm google hiển thị với cùng một vấn đề tôi gặp phải, nhưng không có giải pháp nào phù hợp ..


Tôi sẽ đề nghị bạn cài đặt loglevelthành 256 để xem nó nói gì.
lượng tử

Tôi không có quyền truy cập trực tiếp vào tệp slapd.conf và tôi biết vấn đề là gì nên một bản ghi dài dòng hơn sẽ không được sử dụng nhiều.
steve-gregory

Đáp lại Ethan, 2147483647 là 2 ^ 32 hoặc 0b11111111111111111111111111111111. Đây là câu châm ngôn cho int int 32 bit. Đây là giới hạn kích thước tối đa cho phép.
huống cấp thiết

2147483647 = 2 ^ 31-1
Sean

Câu trả lời:


8

Quản trị viên máy chủ thư mục có thể tự do giới hạn số lượng mục có thể được trả về trong phản hồi yêu cầu tìm kiếm. Máy khách LDAP có thể yêu cầu giới hạn kích thước, nhưng giới hạn do khách hàng yêu cầu này không thể ghi đè giới hạn do máy chủ áp dụng. Việc phân trang hoạt động chính xác: phân trang chỉ cần gửi nhiều phản hồi tìm kiếm, mỗi kích thước được khách hàng yêu cầu, nhưng vẫn không thể vượt quá giới hạn kích thước do máy chủ áp đặt. Chế độ xem danh sách ảo tương tự như phân trang đơn giản, ngoại trừ máy khách LDAP có thể bắt đầu và tiếp tục ở bất cứ đâu, trong khi trong các kết quả phân trang đơn giản, máy khách LDAP phải đọc qua các kết quả một cách tuần tự.


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

Phần quan trọng nằm ở cuối: -E pr=2147483647/noprompt . Tôi đã thực hiện điều này ngày hôm nay, vì vậy tôi biết nó hoạt động, ít nhất là với phụ trợ LDAP của Active Directory. Đối với tôi, điều này đã có thể vượt qua giới hạn máy chủ.

Từ ví dụ của bạn, có vẻ như bạn có thể thiếu dấu / noprompt hoặc / prompt. Sự khác biệt là với / prompt, nó dừng giữa mỗi trang.

Tôi không chắc tại sao số 2147483647 hoạt động, nhưng nó làm.

Nguồn của tôi: http://www.commandlinefu.com/commands/view/2779/bypass-1000-entry-limit-of-active-directory-with-ldapsearch


3
Số lượng 2147483647là kích thước trang. Nếu bạn thay đổi -Etham số thành pr=100/promptbạn sẽ thấy rằng ldapsearchbạn sẽ bấm phím cứ sau 100 kết quả.
rpet

Điều đó làm việc !!!!
Saheb

Theo tôi, Active Directory khác thường ở chỗ nó cho phép tìm kiếm phân trang vượt quá giới hạn kích thước được cấu hình của máy chủ. Tuy nhiên, nó sẽ thực thi giới hạn kích thước phân trang trên các tìm kiếm. Vì bạn đã nói với ldapsearch không nhắc bạn, nên bạn không thấy rằng kích thước trang mà nó thực sự sử dụng cho tìm kiếm đó nhỏ hơn nhiều. Điều này sẽ không hoạt động chống lại Sun LDAP từ 10 năm trước, OpenLDAP vào 8 năm trước, hoặc 389-DS vào lúc 10 phút trước (đó là những gì tôi chạy ở nhà những ngày này.)
Ed Grimm

0

ApacheDS có thể thực hiện các tìm kiếm phân trang mà bạn đang tìm kiếm. Ít nhất là chống lại Active Directory.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.