加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

无法处理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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读