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;
}