jordan_bethの日記: Perl 覚書
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') ;
}
Perl 覚書 More ログイン