當前有一個小的perl腳本給定的username
使用Net :: LDAP從ActiveDirectory獲取他的電子郵件地址。使用Net :: LDAP獲取所有用戶信息
搜索部分如下:
my $user = "myuser";
my $mesg = $ldap->search(
base => "dc=some,dc=example,dc=com",
filter => '(&(sAMAccountName=' . $user . ')(mail=*))', #?!?
);
for my $entry ($mesg->entries) {
my $val = $entry->get_value('mail');
say "==$val==";
}
工作正常。
我應該如何修改上述語句以獲取所有可用的給定用戶的信息myuser
?我希望得到一個Perl的十歲上下的數據結構,例如像下一個:
my $alldata = search(... all info for the given $user ...);
say Dumper $alldata; #hashref with all stored informations for the $user
這可能是死的簡單 - 但我總的AD & LDAP啞人...
編輯:當我傾倒出$msg->entries
(什麼是LADP :: Entry對象)有什麼,但我不知道它包含的一切或只有部分存儲的數據...
,如果你想看看你一個快速的方法是轉儲出來... \t的foreach我的$ E($ mesg->項) {$ E->轉儲; }。但是除非你規定你只需要一些屬性,否則你的服務帳戶只能訪問某些屬性,你應該獲得所有的數據屬性。 – 2014-12-05 19:48:50
因此,使用'filer => ...'我的上面的代碼中有什麼,我應該爲給定的用戶獲取我的服務帳戶的所有信息? – jm666 2014-12-05 19:59:46
是正確的,那麼您將爲每個擁有(e)郵件地址的用戶獲得服務帳戶可用的所有內容。如果你想要沒有郵件的用戶(不是沒有郵件的用戶),你可以在'filter =>'(sAMAccountName ='。$ user。')'中使用特定的samaccountname。你可以迭代所有返回的屬性......'foreach $ a($ e-> attributes)''。每個值都將是一個標量還是一個數組,取決於它是單值還是多值。 – 2014-12-05 20:13:00