Mutt LDAP-Query

Aus Ethersex_Wiki
Version vom 16. Mai 2009, 15:28 Uhr von Stella (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

ja, man kann LDAP richtig schön in Mutt integrieren. Dazu das folgende Skript (basiert auf dem von [1]) irgendwo als mutt_query ablegen:

#!/usr/bin/perl

use strict;
use Net::LDAP;

use constant HOST => 'domina.zerties.org';
use constant BASE => 'dc=zerties,dc=org';
use constant USERNAME => 'cn=Stefan Siegl,ou=Zerties,ou=People,dc=zerties,dc=org';
use constant PASSWORD => 'xxxxxxxx';
use constant VERSION => 3;
use constant SCOPE => 'sub';

my $name;
my @attributes = qw( dn givenName sn mail );
{
    print "Searching directory... ";
    $name = shift || die "Usage: $0 filter\n";
    my $filter = "(|(sn=*$name*)(givenName=*$name*)(mail=*$name*))";
    my $ldap = Net::LDAP->new( HOST, onerror => 'die' )
            || die "Cannot connect: $@";

    $ldap->bind( USERNAME,
    version => VERSION, password => PASSWORD ) or die "Cannot bind: $@";

    my $result = $ldap->search( base => BASE,
                            scope => SCOPE,
                            attrs => \@attributes,
                            filter => $filter
                            );

    my @entries = $result->entries;

    $ldap->unbind();

    print scalar @entries, " entries found.\n";

    foreach my $entry ( @entries ) {
        my @emailAddr = $entry->get_value('mail');
        foreach my $addr (@emailAddr) {
            print $addr , "\t";
            print $entry->get_value('givenName'), " ";
            print $entry->get_value('sn'), "\t \n";
        }
    }
}

Und in der .muttrc die folgende Zeile einfügen:

set query_command = "ldap_query '%s'"

Ggf. noch ein

apt-get install libnet-ldap-perl

Und du solltest wie gewohnt mit Q die Adressen abfragen können, nun jetzt halt aus dem LDAP-Verzeichnis