#!/usr/bin/perl -w # # query an LDAP server from Mutt # based on mutt_ldap_query.pl by Marc de Courville # # Joshua Myles # 27 Feb 2007 # use strict; # # local settings # my $ldap_server = "ldap.mtu.edu"; my $search_base = "ou=people,dc=mtu,dc=edu"; my $ldapsearch = "/usr/bin/ldapsearch"; # # fields used for query and result # my @fields = qw(cn mail sn givenname uid); my $expected_answers = "cn givenname sn mail telephonenumber"; my @results; # # check command-line # if (! $ARGV[0]) { &usage; } $/ = ''; foreach my $askfor (@ARGV) { my $query = join '', map { "($_=$askfor)" } @fields; $query = "(|" . $query . ")"; my $command = "$ldapsearch -x -L -h $ldap_server -b '$search_base' '(|$query)' $expected_answers"; open ( LDAPQUERY , "$command |") || die "LDAP query error: $!\n"; while ( ) { next if ! /^mail: (.*)$/im; my $email = $1; my $phone = /^telephonenumber: (.*)$/im ? $1 : ''; my $cn = /^cn: (.*)/im ? $1 : ' '; my @name = ( /^givenname: (.*)$/im, /^sn: (.*)$/im ); push @results, "<$email>\t@name\t$phone\n"; } close(LDAPQUERY) || die "ldapsearch failed: $!\n"; } print "LDAP query: found ", scalar(@results), "\n", @results; exit 1 if ! @results; sub usage { print STDERR "Usage: $0 Example: $0 Myles "; exit 1; }