当前有一个小的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