Selam,

2015-02-03 16:38 GMT+02:00 Salih PALA <[email protected]>:
> Arkadaşlar Selam,
>
> dn: [email protected],ou=example.com,ou=mailgrubu,o=mail,dc=server,dc=com
> objectClass: top
> objectClass: person
> objectClass: inetOrgPerson
> objectClass: qmailUser
> mailHost: mail.server.com
> qmailDotMode: ldapwithprog
> accountStatus: active
> deliveryMode: nolocal
> mailForwardingAddress: [email protected]
> mailQuotaSize: 500000000
> mailQuotaCount: 20000
> cn: test
> sn: Account
> mail: [email protected]
> mailMessageStore: /maildizini/kullanıcıpati
> uid: [email protected]
>
>
> Ben tüm kullanıcıları listeleyerek bu kullanıcılar içinden yalnızca
> "mailForwardingAddress" attribute'ü kullanan kullanıcıları ve yönlendirilen
> adresleri görmek istiyorum.
>
> Mail: [email protected]
> mailForwardingAddress: [email protected]
> mailForwardingAddress: [email protected]

LDAP üzerinde bu tür işlemler için küçük bir script yazmayı tercih
ediyorum ben. ldapsearch vs. ile de yapılabilir muhtemelen ama biraz
daha çaba gerektirir sanıyorum.

Script şöyle bir şey olabilir: (Test etmedim, ufak değişiklikler gerekebilir.)

<----------   ldap_search.pl   ---------->

#!/usr/bin/perl

use strict;
use warnings;
use feature qw(say);

use Net::LDAP;
use Net::LDAP::Entry;

/* Değişkenler */
my $domain = "example.com";
my $binddn = "uid=admin,cn=admins,dc=example,dc=com"
my $pasword = "pass.word"
my $address = "127.0.0.1"

my $ldap = Net::LDAP->new("$address") or die "$@";

my $mesg = $ldap->bind("$binddn", password => "$password");
$mesg = $ldap->search(base =>
"ou=$domain,ou=mailgrubu,o=mail,dc=example,dc=com", filter =>
"(objectClass=qmailUser)");
$mesg->code && $mesg->error;
my @entries = $mesg->entries;
foreach my $entry (@entries) {
        my $mail = $entry->get_value('mail');
        my @mailForwardingAddress = $entry->get_value('mailForwardingAddress');
        if (@mailForwardingAddress) {
                say $mail;
                say @mailForwardingAddress;
                say "";
        }
}

$mesg = $ldap->unbind;

exit 0;
<-------------------------------------------
------------------------------------------------------------------->


> Bu arada her ldap sorgusu sonucu aldığım dökümde ilgili attribute'lerin 
> sıralamaları farklı
> geliyor. Yani hepsinin belirli bir sıralaması bulunmuyor.

LDAP protokolünde sonuçların sıralaması ile ilgili bir tanımlama
bulunmuyor varsayılan olarak. Bunun için "server-side sort extension"
özelliğinin desteklenmesi gerekiyor sunucu tarafında. ldapsearch'ün -S
parametresi incelenebilir bunun için.

En son baktığımda, Ruby'de bu özelliği destekleyen bir kütüphane
yoktu, şu anki durumu bilemiyorum. Python kütüphaneleri hakkında bir
bilgim yok. Yine ne varsa Perl'de var :)

Kolay gelsin.

-- 
Selçuk Mıynat
_______________________________________________
Linux-sunucu E-Posta Listesi
[email protected]

Liste kurallarını http://liste.linux.org.tr/kurallar.php  bağlantısından 
okuyabilirsiniz;

Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu listeden gelen 
e-postaları almak istemiyorsanız aşağıdaki bağlantı adresini kullanarak 1 
dakika içinde üyeliğinizi sonlandırabilirsiniz.
https://liste.linux.org.tr/mailman/listinfo/linux-sunucu

Cevap