3 # To start out, try something like this against your LDAP:
4 # ldapadd -w metavore -D'cn=Manager,dc=metavore,dc=com' -c -f example3.ldif
5 # ldapmodify -w metavore -D'cn=Manager,dc=metavore,dc=com' -c -f example3.ldif
7 # Then run this script to test perl interaction w/ LDAP.
14 use Net
::LDAP
::Filter
;
16 my $host = (@ARGV) ?
shift : 'localhost';
17 my $filter = Net
::LDAP
::Filter
->new((@ARGV) ?
shift : 'objectClass=inetOrgPerson');
19 base
=> (@ARGV) ?
shift : 'dc=metavore,dc=com',
23 my $ldap = Net
::LDAP
->new($host) or die "Cannot connect to ldap on $host";
24 $ldap->bind("cn=Manager," . $params{'base'}, password
=>'metavore') or die "Cannot bind to ldap on $host";
31 my $query = shift or die "Bad hashup call";
34 foreach my $user ($query->shift_entry){
35 foreach my $k (@
$user) {
36 foreach my $k2 ( keys %$k ) {
40 $memberhash{$key} .= map {$_ . " "} @
$k{$k2};
48 sub recursive_breakdown
{
49 my $dse = shift or return undef;
50 if (ref($dse) =~ /HASH/) {
51 return join "\n", map {"$_\t=> " . recursive_breakdown
($dse->{$_})} keys %$dse;
52 } elsif (ref($dse) =~ /ARRAY/) {
53 return " (\n" . join("\n", map {recursive_breakdown
($_)} @
$dse) . "\n)\n";
60 print "my root DSE: \n";
61 print recursive_breakdown
$ldap->root_dse();
65 my $query = $ldap->search(%params) or print "Search failed\n";
66 $query->code and die sprintf 'error (code:%s) - %s', $query->code , $query->error;
67 my $size = scalar($query->entries);
69 print "\nNumber of records returned from search: $size.\n";
70 ($size > $i) and print "Displaying the last $i records.\n\n";
71 foreach ($query->entries) {
72 ($size-- > $i) and next;
78 my $cn = shift or return 0;
81 print "Adding user $cn\n";
84 "cn=$cn," . $params{'base'},
88 mail
=> $mail . '@liblime.com',
89 telephoneNumber
=> '1 614 266 9798',
90 description
=> 'Implementer and Destroyer',
91 objectclass
=> ['person','inetOrgPerson'],
93 or printf "Add failed (code %s): %s\n", ($add->code||'unknown'), ($add->error||'unknown');
97 ($ldap) and $ldap->unbind;