ldap-telefonbuch.pl #!/usr/bin/perl # # 2007 Oliver Voelker # use strict; use Net::LDAP; use Getopt::Long; my $ldapserver = "ldap.mein-server.de"; my $base = "ou=People,dc=mein-server,dc=de"; my $debug = 0; my $search = "*"; my $verbose = 0; my $help = 0; my $opts = GetOptions("debug|d!" => \$debug, "verbose|v!" => \$verbose, "search|s:s" => \$search, "help|h!" => \$help); sub LDAPsearch { my ($ldap,$searchString,$attrs,$base) = @_; if (!$base) { $base = "dc=mein-server,dc=de"; } if ($searchString eq "cn=***") { $searchString = "cn=*"; } if (!$attrs) { $attrs = [ 'cn','mail' ]; } my $result = $ldap->search(base => "$base", scope => "sub", filter => "$searchString", attrs => $attrs); } my $ldap = Net::LDAP->new($ldapserver) or die "$@"; my $mesg = $ldap->bind(version => 3); my @Attrs = ( ); # request all available attributes to be returned. if ($help) { print "Usage: tel [OPION]... name\n"; print "List ldap-Entries\n\n"; print " -h, --help\t\tDisplay this page\n"; print " -d, --debug\t\tDebug-Mode - RAW-Display all Entries\n"; print " -v, --verbose\t\tExtended display\n"; print " -s, --search\t\tSearch for name (surname or lastname or parts of the name is possible\n"; exit 0; } if ($ARGV[0]) { $search = $ARGV[0]; } my $result = LDAPsearch($ldap, "cn=*$search*", \@Attrs, $base); my @entries = $result->entries; my $entr; foreach $entr (@entries) { next if ($entr->get_value("sn") =~ /ldap$/); # den LDAP-User ausblenden if ($debug) { print "DN: ", $entr->dn, "\n"; my $attr; foreach $attr (sort $entr->attributes) { next if ($attr =~ /;binary$/); print " $attr : ", $entr->get_value($attr) ,"\n"; } print "#-------------------------------\n"; } else { my $attr; foreach $attr (sort $entr->attributes) { next if ($attr =~ /;binary$/); if ($attr =~ /cn$/) { print " Name:\t ", $entr->get_value($attr) ,"\n";} if ($attr =~ /telephoneNumber$/) { print " Tel:\t ", $entr->get_value( $attr ) ,"\n"; } if ($verbose) { if ($attr =~ /mail$/) { print " Mail:\t ", $entr->get_value($attr) ,"\n"; } if ($attr =~ /facsimileTelephoneNumber$/) { print " Fax:\t ", $entr->get_value($attr) ,"\n"; } if ($attr =~ /labeledUri$/) { print " URL:\t ", $entr->get_value($attr) ,"\n"; } if ($attr =~ /mobile$/) { print " Mobil:\t ", $entr->get_value($attr) ,"\n"; } if ($attr =~ /nsAIMid$/) { print " ICQ:\t ", $entr->get_value($attr) ,"\n"; } if ($attr =~ /postalAddress$/) { print " Adr:\t ", $entr->get_value($attr) ,"\n"; } } } print "#-------------------------------\n"; } }