On Mar 30, 2010, at 6:37 AM, Michael McGovern wrote:

> Thanks contributors, especially Don for the 'range=0-*' tip.  That did
> the trick.
> 
> Also thanks to Graham Barr for the 'debug => 15' tip, which showed I
> was getting the data back ok but not displaying it because the
> attribute in get_value has to be something like
> 'member;range=1000-1999' as opposed to 'member'

Just a thought, but as there is an option to get of alloptions => 1 which 
returns a hashref,
I wonder if it would be useful to have  ignoreoptions that would ignore 
everything after the ;

If anyone want to write such a patch I would accept it.

Graham.

> 
>  Mike
> 
> 
> 
> 
> 2010/3/29 Miller, Don C. <d...@uidaho.edu>:
>> The -limit option for dsquery deals with the paging not with attributes.
>> There was discussion on this topic a few years back and you can request
>> the attribute with an additional range argument 'member;Range=0-*'.
>> Hopefully this will provide you with consistent results.  You could also
>> do your own member "paging" by changing the ranges until no members are
>> returned.
>> 
>> Don
>> 
>> -----Original Message-----
>> From: Spurrell Simon (KIDG 61) [mailto:simon.spurr...@credit-suisse.com]
>> 
>> Sent: Monday, March 29, 2010 6:59 AM
>> To: Prentice Bisbal; perl-ldap@perl.org
>> Subject: RE: search for one object with thousands of members fails
>> 
>> Yes I believe the AD does have a limit.
>> 
>> I was using dsquery in the old days working in Exchange and AD.
>> 
>> dsquery * domainroot -filter
>> "(&(objectCategory=Person)(!objectClass=contact))" -limit 0 -attr name
>> department displayName
>> 
>> the "-limit 0" would make sure all attributes for all objects were
>> returned.
>> 
>> 
>> 
>> 
>> -----Original Message-----
>> From: Prentice Bisbal [mailto:prent...@ias.edu]
>> Sent: Monday, March 29, 2010 3:43 PM
>> To: perl-ldap@perl.org
>> Subject: Re: search for one object with thousands of members fails
>> 
>> OpenLDAP, by default, limits the number of returned results to only 500,
>> except for the admin user. Is it possible that AD has similar default
>> limits? There should be some way to override that limit. Not sure if the
>> line
>> 
>> my $page = Net::LDAP::Control::Paged->new(size =>  500)
>> 
>> affects that limit.
>> 
>> Prentice
>> 
>> 
>> Michael McGovern wrote:
>>> I'm trying to extract a list of the members of of a Global Group in
>> AD.
>>> It works for groups with a small number (hundreds) of members but not
>>> for one with thousands. I don't even get the first few hundred of the
>>> large group.
>>> 
>>> I've tried using LDAP_CONTROL_PAGED, but I think that it controls
>>> paging of large numbers of objects rather than single objects with
>>> large numbers of members.
>>> 
>>> I would welcome suggestions to get around this problem Code snippet:
>>> ======================================================
>>> use Net::LDAP;
>>> use Net::LDAP::Control::Paged;
>>> use Net::LDAP::Constant qw(LDAP_CONTROL_PAGED); use Net::LDAP::Util
>>> qw(ldap_error_text ldap_error_name
>> ldap_error_desc);
>>> $ldap_server = "college.my.dom";
>>> $bind_user   = "myuser";
>>> $bind_pass   = "mypassword";
>>> $ldap_base   = "ou=Global Groups,dc=COLLEGE,dc=my,dc=dom";
>>> $ldap = Net::LDAP->new($ldap_server, debug => 0 ) or die "$@";
>>> $ldap->bind($bind_user,password=>$bind_pass) or die "$@";
>>> $group="students"; my $page = Net::LDAP::Control::Paged->new(size =>
>>> 500); my $cookie; my @args = (
>>>       base => $ldap_base,
>>>       filter => "(cn=$group)",
>>>       attr => "member",
>>>       callback => \&process_entry,
>>>       control => [ $page ] );
>>> 
>>> while ($results = $ldap->search(@args)) {
>>>    ($conres) = $results->control(LDAP_CONTROL_PAGED);
>>>    $cookie = $conres->cookie or last;
>>>    warn "got cookie\n"; # I never get a cookie, because there's only
>> one object?
>>>    $page->cookie($cookie);
>>> };
>>> 
>>> sub process_entry {
>>>    my $mesg = shift;
>>>    my $entry = shift;
>>>    (warn "end of entry\n", return) unless $entry;
>>>       foreach ( $entry->get_value("member")) {
>>>            # process member
>>>       };
>>> }
>>> ======================================================
>>> 
>>> 
>>>   Mike
>>> 
>> 
>> --
>> Prentice Bisbal
>> Linux Software Support Specialist/System Administrator School of Natural
>> Sciences Institute for Advanced Study Princeton, NJ
>> 
> 

Reply via email to