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;

Reply via email to