2017-10-31 13 views
0

私がしようとしているのは、ユーザーを検索してPerlスクリプトでユーザーのDNを返すことだけです。しかし、私のスクリプトは、実際のDNの代わりにハッシュへの参照を出力しています。ユーザーDNのLDAP検索でハッシュ - Perlを返す

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 [email protected]; 

#Send username and password 
my $mesg = $ldap->bind(dn => $rootDN, password => $password) or die [email protected]; 


my $result = $ldap->search(
    base => "ou=AllProfiles", 
    filter => "(cn=Alice Lee)", 
    attrs => ['*','entrydn'], 
); 

my $href = $result; 
print "$href\n"; 

は私の出力である:私はこれを取得していますなぜ

enter image description here

誰でも知っていますか?またはそれを修正する方法を知っていますか?

ありがとうございます!

+1

'利用データを追加します。 :Dumper'、次に 'print Dumper $ href;'を実行します。出力で、あなたが望むフィールドに関連付けられているキーを見つけたら、 'print" $ href - > {field_name} \ n ";'を実行できます。基本的には、ハッシュリファレンスを逆参照し、必要なデータにマップするキーを使用して、必要なデータを取り出す必要があります。 – stevieb

+0

なぜConfig :: SimpleとTry :: Tinyがそのコードに含まれていますか?あなたはそれを使用していません。 – simbabque

+0

'search'メソッドは' Net :: LDAP :: Search'のオブジェクトを返さなければなりません... –

答えて

0

結果を得るために必要なオブジェクト全体が返され、そこから目的のものに移動します。確かに "entrydn"が正しい名前であれば、これはうまくいくと思います。

my $entries = $result->entries; 
my $dn = $entries[0]->get_value('entrydn'); 

(。。あなたが複数のエントリを返すことが予想される場合は、もちろんあなたは反復する必要がありますあなたは何の結果を得ていない可能性がある場合は、あなたもそれをチェックする必要があります)

+0

ありがとう、これは完璧に動作します! –

関連する問題