perl - Increase limit from 1000? -
when search so
my $mesg = $ldap->search( base => "ou=test,dc=example,dc=com", scope => 'one', filter => '(objectclass=organizationalperson)', attrs => ['distinguishedname', 'displayname', 'samaccountname', 'employeeid'], );
i 1000 entries, expect ~20000.
is possible increase limit in perl script, or have changed on server?
the solution use paged search so
use net::ldap; use net::ldap::control::paged; use net::ldap::constant qw( ldap_control_paged ); $page = net::ldap::control::paged->new(size => 999); $cookie; while (1) { $mesg = $ldap->search( base => "ou=test,dc=example,dc=com", scope => 'one', filter => '(objectclass=organizationalperson)', attrs => ['distinguishedname', 'displayname', 'samaccountname', 'employeeid'], control => [$page] ); $mesg->code && die "error on search: $@ : " . $mesg->error; while (my $adentry = $mesg->pop_entry()) { # process $adentry } ($resp) = $mesg->control(ldap_control_paged) or last; $cookie = $resp->cookie or last; # paging control $page->cookie($cookie); } if ($cookie) { print "abnormal exit\n"; # abnormal exit, let server know not want more $page->cookie($cookie); $page->size(0); $ldap->search(control => [$page]); }
Comments
Post a Comment