LDAP 搜索用户 DN Returns a Hash - Perl
LDAP Search for User DN Returns a Hash - Perl
我想做的就是在 Perl 脚本中搜索用户和 return 用户的 DN。但是,我的脚本打印的是对散列的引用,而不是用户的实际 DN。
稍后需要将 DN 放入另一个变量中,因此我需要正确的 DN。
这是我的代码:
use strict;
use warnings;
use Net::LDAPS;
use Net::LDAP;
use Config::Simple;
use Try::Tiny;
#LDAP connection.
my $ldap;
my $hostname = "Hostname";
my $port = 2389;
my $rootDN = "username";
my $password = "password";
#Connect to LDAP
$ldap = Net::LDAP->new( $hostname, port => $port ) or die $@;
#Send username and password
my $mesg = $ldap->bind(dn => $rootDN, password => $password) or die $@;
my $result = $ldap->search(
base => "ou=AllProfiles",
filter => "(cn=Alice Lee)",
attrs => ['*','entrydn'],
);
my $href = $result;
print "$href\n";
这是我的输出:
有人知道我为什么会收到这个吗?或者知道如何修复它?
谢谢!
您取回了一个完整的对象,您需要从中获取结果,然后从中导航到您想要的内容。我相信这会奏效,如果“entrydn
”确实是正确的名称。
my $entries = $result->entries;
my $dn = $entries[0]->get_value('entrydn');
(如果你希望 return 不止一个条目,当然你将不得不迭代。如果你可能没有结果,你也需要检查一下。)
我想做的就是在 Perl 脚本中搜索用户和 return 用户的 DN。但是,我的脚本打印的是对散列的引用,而不是用户的实际 DN。
稍后需要将 DN 放入另一个变量中,因此我需要正确的 DN。
这是我的代码:
use strict;
use warnings;
use Net::LDAPS;
use Net::LDAP;
use Config::Simple;
use Try::Tiny;
#LDAP connection.
my $ldap;
my $hostname = "Hostname";
my $port = 2389;
my $rootDN = "username";
my $password = "password";
#Connect to LDAP
$ldap = Net::LDAP->new( $hostname, port => $port ) or die $@;
#Send username and password
my $mesg = $ldap->bind(dn => $rootDN, password => $password) or die $@;
my $result = $ldap->search(
base => "ou=AllProfiles",
filter => "(cn=Alice Lee)",
attrs => ['*','entrydn'],
);
my $href = $result;
print "$href\n";
这是我的输出:
有人知道我为什么会收到这个吗?或者知道如何修复它?
谢谢!
您取回了一个完整的对象,您需要从中获取结果,然后从中导航到您想要的内容。我相信这会奏效,如果“entrydn
”确实是正确的名称。
my $entries = $result->entries;
my $dn = $entries[0]->get_value('entrydn');
(如果你希望 return 不止一个条目,当然你将不得不迭代。如果你可能没有结果,你也需要检查一下。)