my target was just findout the total number of members in "+ ASIC PASIFIC 
REGION SALES TEAM" (distribution list)

Using Net::LDAP and  to query a server

connected
binded successful

baseDN = DC=India,DC=eurw,DC=abc,DC=net

Filter = (&(memberof=CN=+ ASIC PASIFIC REGION SALES 
TEAM,OU=Groups,OU=ATOS,DC=India,DC=eurw,DC=abc,DC=net))

attribute to display is : cn;distinguishedName

This returns only 33 accounts ( all 33 accounts are persons or users) 

and page size is also  1000

$page = Net::LDAP::Control::Paged->new( size => 1000 );

... but when do the manual look-up i can see thousands of members in this 
distribution list.



any thoughts?


Here is the program

#!perl.exe
use strict;
use Net::LDAP;
use Net::LDAP::Control;
use Net::LDAP::Constant qw(LDAP_CONTROL_PAGED);
use Net::LDAP::Util qw(ldap_error_name ldap_error_text);

my @member;
my $values =  'REMOVED for posting';
        my ($server, $base,$user,$password) = split(/\t/, $values);
        $server   = &strip($server);
        $base     = &strip($base);
        $user     = &strip($user);
        $password = &strip($password);
        my $ldap = &lConnect($server);
#       $ldap->debug(3);
        my $isBinded = $ldap->bind ("$user", password=>"$password");
        #my $isBinded = $ldap->bind ("$user", sasl => $sasl, version => 3);
        print "ERROR detected: -> ", ldap_error_name($isBinded->code), " ", 
ldap_error_text($isBinded->code) if($isBinded->code);
        print OUT "ERROR detected: -> ", ldap_error_name($isBinded->code), " ", 
ldap_error_text($isBinded->code) if($isBinded->code);
        my $total = ouscan($base, $ldap);
        print qq~    Server name is $server  u - $user p - $password
                                 base is-$base
                                 Total count is $total
                                 ~;
        $ldap->unbind();


sub ouscan {
    my $base = shift @_;
        my $ldap = shift @_;
        my $totalMembers =0;
        my @attrs = qw(cn);
        my $page = Net::LDAP::Control->new( LDAP_CONTROL_PAGED, size => 1000);
        my @args = (
                base     => $base,
                scope    => "subtree",
        filter   => '(&(memberof=CN=EYFR ATOS EXPLOITATION-UTILISA. DU 
DOMAINE,OU=Groups,OU=ATOS,DC=fr,DC=eurw,DC=ey,DC=net))',
                control  => [ $page ],
                attrs => [ @attrs ]
        );
        while (defined (my $searchThis = $ldap->search( @args )) ) {
                $totalMembers = $totalMembers + $searchThis->count;
                print " now the count is $totalMembers\n";
            my ($resp) = $searchThis->control( LDAP_CONTROL_PAGED );

                foreach my $entry ($searchThis->all_entries)
                {
                                @member = $entry->get_value('cn');
                        }
                        my $i;
                        foreach my $nowMem (@member) {
                                $i++;
                                print "$i Now the member is $nowMem\n";
                        }
            last unless ref $resp && $page->cookie($resp->cookie);
        }
        return($totalMembers);
}

sub lConnect {
        my $server = shift;
        print " the server name is $server\n";
        my $ldap = Net::LDAP->new($server, port=> 389, version => 3);
        print "=== The error is $@ <====\n";
        #$ldap->debug(15);
#    if($ldap->code) {
#        print " ERROR detected: ldap_error_name($ldap->code) - - - 
ldap_error_text($ldap->code) $@";
#     }
        #my $ldap = Net::LDAP->new($server, port=>3268) or die "$@";
        return($ldap);
}


sub strip {
        my $field = shift;
        if (! defined($field))
        {
                return $field;
        }
        $field =~ s/^\s+//;
        $field =~ s/\s+$//;
                $field =~ s/\n|\r//g;
        return $field;
}

Reply via email to