From Notes
#!/usr/bin/perl
use strict ;
use Net::LDAP ;
my $server = "ldap://<server>.example.com:389" ;
my $userbase = "ou=People,dc=example,dc=com" ;
my $searchbase = "dc=example,dc=com" ;
my $bind_dn= "cn=Manager,dc=example,dc=com" ;
my $bind_pass = "<password>" ;
my $ldap = Net::LDAP->new("$server") or die "$@";
my $mesg = $ldap->start_tls(
verify => 'require',
cafile => '/usr/share/ssl/certs/ca_cert.crt',
sslversion => 'tlsv1',
ciphers => 'HIGH:MEDIUM:+SSLv2:RSA'
);
$mesg = $ldap->bind($bind_dn,
password => $bind_pass,
version => 3 );
#$mesg = $ldap->bind() ;
# Error checking on bind
$mesg->code && warn "bind failed: ", $mesg->error ;
$mesg = $ldap->search(
base => $searchbase,
filter => "(&(objectClass=posixAccount)(!(objectClass=shadowAccount)))"
) ;
# Error checking on search
$mesg->code && warn "search failed: ", $mesg->error ;
# Print number of results
my $count = $mesg->count ;
printf "Results: %d\n", $count ;
for ( my $i = 0 ; $i < $count ; $i++ ) {
my $entry = $mesg->entry ( $i );
# foreach my $attr ( $entry->attributes ) {
# print join( ": ", $attr, $entry->get_value( $attr ) ), "\n";
# }
my $dn = $entry->dn ;
print $dn ;
# my $mod_mesg = $ldap->modify( $dn, add => { objectClass => 'shadowAccount' } );
# Error checking on add
# $mod_mesg->code && warn "add failed: ", $mesg->error ;
print "\n" ;
}
#my $entry ;
#foreach $entry ($mesg->entries) { $entry->dump; }
$mesg = $ldap->unbind() ;
# Error checking on un-bind
$mesg->code && warn "failed to un-bind: ", $mesg->error ;
exit(0) ;