微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Perl Net :: LDAP过滤器不起作用

如何解决Perl Net :: LDAP过滤器不起作用

| 我正在使用perl-ldap搜索修改LDAP目录。 除了我尝试根据其\“ uniqueMember \”属性(其值为dn(例如,
cn=exuser,ou=people,dc=example,dc=com
))搜索组外,其他所有操作都正常。 这似乎使筛选字符串基于组成员进行搜索
uniqueMember=cn=exuser,dc=com
但这不起作用。 “转义”字符串中的等号也不会,因此,在打印结果字符串时,看起来好像其等号转义了。而且Net :: LDAP :: Filter对象没有很好的文档,所以我不确定如何创建一个,只是传递我一直使用的过滤器字符串(它也\不起作用)。 有什么建议么? 我应该补充一点,我确定问题是搜索没有返回结果-结果Search对象的计数为0。 我无法显示确切的代码,但这是这样的(仅文字已更改):
my $filter = \"uniqueMember=cn=exuser,dc=com\";

my $result = $ldap->search( base => \'ou=groups,dc=com\',filter => $filter);
while(my $entry = $result->pop_entry)
{ ....
....
}
可以通过子例程完成与LDAP服务器的连接和绑定。我可以肯定组织单位的名称以及
uniqueMember
值的格式。对于
$filter
字符串,我尝试一次转义等号(
\\=
)和两次(
\\\\\\\\=
)。我试过使用
Net::LDAP::Filter->new($filter)
-尽管我的理解是它需要一个类似于代码中的过滤字符串,所以这并不是很有帮助。 格式化此过滤器字符串的正确方法是什么?     

解决方法

        尝试以下调试语句以查看最终过滤器的外观
my $filter_str = \"uniqueMember=cn=exuser,ou=people,dc=example,dc=com\";
my $filter = Net::LDAP::Filter->new( $filter_str );

print $filter->as_string();
另外,尝试使用通配符,如下所示:
#my $filter = \"uniqueMember=cn=exuser,dc=com\";
my $filter = \"uniqueMember=*exuser*\";
另外,您的基准指向的是
ou=groups
,而不是滤波器的
ou=people
。这可能会引起问题,因为“组”中可能没有任何用户具有这些属性。
#my $result = $ldap->search( base => \'ou=groups,dc=com\',my $result = $ldap->search( base => \'ou=people,filter => $filter);
while(my $entry = $result->pop_entry)
{ ....
  ....
}
    ,        这可与命令行LDAP工具一起使用吗?似乎是LDAP查询而不是Net :: LDAP的问题。 我对LDAP语法不太满意,但我认为它会像
(&(group=uniqueMember)(cn=exuser)(ou=people)(dc=example)(dc=com))
您也可以尝试使用Net :: LDAP :: Filter设置过滤器,并查看其解析结果。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。