LDAP Filtern
Panzer
- perl
hey leute
habe ein kleines Problem, undzwar will ich aus dem LDAP mithilfe eines Perl-Scriptes die Emailadressen der Kunden raussuchen.
Soweit so gut, allerdings will ich nur welche mit einer bestimmten Adresse haben, nehmen wir dazu mal '@pseudo.de'
ich habe es damit versucht:
$mesg = $ldap->search(filter=>"(mail=*@pseudo.de)", base=>$readbase, attrs=>['cn', 'sn', 'mail', 'gosaMailAlternateAddress']);
aber da listet er trotzdem noch alle möglichen auf :/
habe mich schon dumm und dämlich gesucht, aber finde einfach nichts - need help plz^^
MfG Panzer
Glaskugel sagt: du tust irgendwas falsch, aber mangels Quellcode von dir und Zugriff auf den LDAP-Server kann man es nicht genau beurteilen. Den korrekten Base-DN kannst du mittels gq rauspfriemeln. Das folgende Beispiel funktioniert für mich:
use Net::LDAP qw();
my $ldap = Net::LDAP->new('ldaphost') or die;
$ldap->bind;
my $search = $ldap->search(
base => 'ou=people,dc=example,dc=com',
filter => '(mail=*@example.net)',
attrs => [qw(uid mail)],
);
for my $entry ($search->entries) {
say $entry->get_value('uid');
say $entry->get_value('mail');
}
Glaskugel sagt: du tust irgendwas falsch, aber mangels Quellcode von dir und Zugriff auf den LDAP-Server kann man es nicht genau beurteilen. Den korrekten Base-DN kannst du mittels gq rauspfriemeln. Das folgende Beispiel funktioniert für mich:
use Net::LDAP qw();
my $ldap = Net::LDAP->new('ldaphost') or die;
$ldap->bind;my $search = $ldap->search(
base => 'ou=people,dc=example,dc=com',
filter => '(mail=*@example.net)',
attrs => [qw(uid mail)],
);for my $entry ($search->entries) {
say $entry->get_value('uid');
say $entry->get_value('mail');
}
woah der Fehler war einfach zu dumm -.-
die Antwort hat mir zwar nur indirekt weiter geholfen, aber trotzdem danke :)
ich musste beim Filter einfach nur " gegen ' tauschen ^^
MfG Panzer
use warnings;
hätte dich auf dein Versehen hingewiesen.