use strict; use Net::LDAP; use Data::Dumper; ############################################### # Account to bind to LDAP (Active Directory) # # non-priviledged (could even be a guest account) ############################################### my $account = 'cn=someuser, ou=someou, DC=my, DC=ad_domain, DC=com'; my $pwd = 'secret'; my $userid ='userid'; # Search User-ID my %all_users; ############################################ # Bind to LDAP and query for DHCP servers # ############################################ my $ldap = Net::LDAP->new( 'mydc.ad_domain.com' ) or die "$@"; my $mesg = $ldap->bind( $account, password => $pwd ); $mesg = $ldap->search( # perform a search base => "ou=someou, DC=my, DC=ad_domain, DC=com", filter => "(&(objectclass=user)(samAccountname=$userid))" ); $mesg->code && die $mesg->error; ################################################## # retrieve the properties from the results # ################################################## my $max = $mesg->count; for ( my $i = 0; $i < $max; $i++ ) { my $entry = $mesg->entry ( $i ); my $userid = $entry->get_value('samAccountname'); $all_users{$userid}{'first_name'} = $entry->get_value( 'givenName' ); $all_users{$userid}{'last_name'} = $entry->get_value( 'sn' ); $all_users{$userid}{'phone'} = $entry->get_value( 'telephoneNumber' ); } ################################ # unbind from LDAP # ################################ $mesg = $ldap->unbind; print Dumper(\%all_users);