パスワードを忘れた? アカウント作成
480569 journal

jordan_bethの日記: Perl 覚書

日記 by jordan_beth

Net::LDAP の使用法

LDAP サーバに接続

$ldapcon = Net::LDAP->new
           (
               サーバホスト,
               (
                   port    => ポート番号,
                   scheme  => 接続方法,              # 'ldap' 'ldaps' 'ldapi'
                   version => LDAP バージョン番号,   # 2 または 3
                   debug   => スイッチ               # 0 または 1
               )
           )

接続出来れば $ldapcon に Net::LDAP オブジェクトが格納され、失敗すると undef を返す。

バインド
接続に成功したらバインド(ログインのようなもの)をしなければならない。

$msg = $ldapcon->bind
       (
           バインドユーザ名,
           {
               password  => 'バインドパスワード',
               anonymous => 'スイッチ'              # 0 または 1。匿名バインドを有効にし、その場合 password は無視
           }
       ) ;

あらかじめ匿名バインドであることがわかっている場合には

$msg = $ldapcon->bind() ;

でかまわない。
$msg は実行結果を返す。もし $msg->is_error() が真であればそのメソッドではエラーが発生しており、そのエラーメッセージが $msg->error() で取得できる。

検索

$msg = $ldapcon->search
       (
           (
               base => 検索基底 DN,          # 検索する DN
               scope => 検索範囲,            # 'base'  検索基底 DN のオブジェクトのみを検索
                                             # 'one'   検索基底 DN の直下のみを検索
                                             # 'sub'   検索基底 DN 以下全てのオブジェクトを再帰的に検索
               sizelimit => 個数,            # 検索結果のエントリ上限個数
               timelimit => 秒数             # 検索にかけてよい時間の上限を設定
               typesonly => スイッチ         # アトリビュートのタイプだけを検索結果として返すようになる。
               filter => 検索フィルタ        # 検索フィルタの文字列
               attr  => アトリビュート       # 検索結果として返して欲しいアトリビュート名。指定がなければ全てのアトリビュートが返される。
           )
       )

検索結果は前述のエラー情報とともに、 $msg の中に格納される。検索でマッチしたエントリは $msg->entries() で取得可能。これは Net::LDAP::Entry オブジェクトとなる。個々のエントリのアトリビュートを取り出すためには get_value() メソッドを使えばよい。

foreach $entry ( $msg->entries() )
{
     #エントリごとの処理
    $attr1value = $entry->get_value('attr1') ;
    $attr2value = $entry->get_value('attr2') ;
}

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー

読み込み中...