I am trying to write a script that searches ldap for a group and then
prints out the members of that group. I stripped it down to the bare
essentials to figure out why it's not working. When I run it, I get
the attributes for the group name, but I don't get any members back,
and I get an error message:
Can't locate object method "get_value" via package
"Net::LDAP::Reference" at dl_
dn.pl line 24, <DATA> line 225.
Thanks for the help!
Here it is:
use Net::LDAP;
open (DISTRIBUTION_LISTS, ">distribution_lists.csv");
$ldap = Net::LDAP->new( 'XXXX', port =>389 ) or die "$@";
$ldap->bind( "XXXX", password => "XXXX" )
or die "$@";
$mesg = $ldap->search( # perform a search
base => "XXXXX",
filter => "ciscoEcsbuObjectType=2",
attrs => [ 'displayname','mail', 'member' ],
callback => \&callback
);
sub callback {
my ( $mesg, $entry ) = @_;
if (!defined($entry)){
return;
}
my $displayname = $entry->get_value('displayname');
my $mail = $entry->get_value('mail');
@member = $entry->get_value(member);
print "$displayname, $mail\n";
foreach (@member) {
my $filter_item = $member;
print "$filter_item\n";
$mesg = $ldap->search(
base => "
",
filter => "distinguishedname=$filter_item",
attrs => [ 'givenname','sn']
);
my $givenname=get_value->$entry('givenname');
my $sn=get_value->$entry('sn');
print "$givenname, $sn\n";
}
}
close DISTRIBUTION_LISTS;
$mesg = $ldap->unbind;