无法处理perl LDAP搜索
发布时间:2020-12-16 06:17:03 所属栏目:大数据 来源:网络整理
导读:这是我在StackOverFlow上的第一个问题,所以如果我做错了,请告诉我. 我正在编写一个perl脚本来执行LDAP搜索,以识别用户所属的列表组.我阅读了关于这个主题的perldocs,并在这个网站上找到了一些例子,但是我无法让脚本正常运行. 这是我的代码: #!/usr/bin/perl
这是我在StackOverFlow上的第一个问题,所以如果我做错了,请告诉我.
我正在编写一个perl脚本来执行LDAP搜索,以识别用户所属的列表组.我阅读了关于这个主题的perldocs,并在这个网站上找到了一些例子,但是我无法让脚本正常运行. 这是我的代码: #!/usr/bin/perl use strict; use warnings; use Net::LDAP; my $ldap; my $ldapuser = "MVSuser"; my $ldappass = "passw0rd"; my $searchbase = "DC=dom,DC=site,DC=labs,DC=domain,DC=net"; my $attrs = "sAMAccountName,sn,givenname,memberOf"; my $filter="(samAccountName=user)"; my $result; # ensure the ldap connection is made print "Connecting to LDAP...n"; $_ = $ldap = Net::LDAP->new('dc1.mvs.cso.labs.rim.net') or die "$@"; # ensure the bind is successful print 'Binding....'; $_ = $ldap->bind ("$ldapuser",password=>$ldappass,version=>3); print $_->error_text(); $result = $ldap->search(base=>"$searchbase",filter=>"$filter",attrs=>[$attrs]); my $max; my $i; my $entry; my $first; my $last; my $login; my @memberOf; $max = $result->count; print "Count: $maxn"; for ($i=0;$i<$max;$i++) { $entry = $result->entry($i); $last = $entry->get_value('sn'); $login = $entry->get_value('sAMAccountName'); @memberOf = $entry->get_value('memberOf'); print "$first $lastn"; print "$loginn"; print "@memberOfn"; } $ldap->unbind; $ldap->disconnect; 这是我运行此代码时的结果: Connecting to LDAP... Binding....Operation completed without error Count: 1 Use of uninitialized value $first in concatenation (.) or string at ./ldap_test.cgi line 43,<DATA> line 604. Use of uninitialized value $last in concatenation (.) or string at ./ldap_test.cgi line 43,<DATA> line 604. Use of uninitialized value $login in concatenation (.) or string at ./ldap_test.cgi line 44,<DATA> line 604. 据我所知,在我运行时,$entry没有返回任何值: $entry = $result->entry($i); 但我可能是错的. 谢谢, 解决方法
问题出在搜索的属性部分.你给它一个字符串,它期待一个数组引用.
错误: my $attrs = "sAMAccountName,memberOf"; $result = $ldap->search(base=>"$searchbase",attrs=>[$attrs]); 好: my $attrs = ["sAMAccountName","sn","givenname","memberOf"]; $result = $ldap->search(base=>"$searchbase",attrs=>$attrs); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |