2011-11-09 54 views
0

我需要檢索從給定DN STRING小時所有組織單位,我使用的Net :: LDAP模塊和這個小腳本:如何查詢從給定DN組織單位在Perl

my $msg = $ldap->search(
    base=>'DC=sample1,DC=sample2', 
    filter=>'(objectclass=User)', 
); 
foreach $entry ($msg->entries) { 
    $dn = $entry->dn; 
    #how can i retrieve OUs? 
} 

例如,如果DN返回字符串:

CN =樣品樣品,OU =一,OU =二,DC = SAMPLE1,DC = SAMPLE2

我想找回一,二。

回答

1

使用基礎對象dc=example1,dc=sample2和存在過濾器(ou=*)發出一級搜索請求。鑑於這些結果,使用每個返回的ou發佈一個級別的搜索,其中存在篩選器爲(ou=*)。對於這些搜索中的每一個,請指定大小限制和時間限制。有關搜索請求的更多信息,請參閱"LDAP: Using ldapsearch""LDAP: programming practices"

+0

你對「一級搜索」有什麼意義?對不起,但這是我第一次使用LDAP查詢。有沒有一種方法可以從我搜索的搜索開始檢索這些值? – raz3r

+0

「一級搜索」限制搜索條目的直接下屬。例如,在dc = sample1,dc = sample2的一級搜索將只返回直接位於dc = sample1,dc = sample2下方的條目,例如在您的示例中爲ou = two。 LDAP有三個「範圍」,「基礎」(條目本身),「一」(如所述,直屬下屬)和「子」(目標和目標本身之下的所有條目)。在dc = example1,dc = example2範圍內搜索'one'會返回ou = 2和該級別的所有其他條目,但沒有低於該級別。代碼然後可以遍歷這些代碼。 –