前のトピック: サポートされているスキーマの表示

次のトピック: CA Directory のトラブルシューティング

Perl での LDAP プログラミング

このセクションでは、Net::LDAP モジュールを使用して、LDAP データにアクセスする方法について説明します。このモジュールは任意の Perl CPAN アーカイブから利用可能です。

このセクションでは、Perl の十分な知識があることを想定します。したがって、Perl または Net::LDAP モジュールのインストールについては説明しません。 この例は暗黙の保証または明示的な保証なしで提供されます。 CA は、Perl 言語または Net::LDAP Perl のモジュールのサポートを提供しません。

注: 行番号はコメントを表します(プログラムの一部ではありません)。

このプログラムは Democorp ディレクトリから Secretary という肩書きのあるエントリを抽出し、その名前と電話番号を出力します。

#!/usr/local/bin/perl -w
2	
# This is a demonstration of accessing the Democorp directory using the
# Net::LDAP Perl modules
5	use strict;
7	use warnings;
8	use Net::LDAP;
10
11	my($ldap, $mesg, $entry);
12
13	$ldap = Net::LDAP->new('yourhost.com:19389') or die "Can't connect: $@";
14
15	# anonymous bind
16	$mesg = $ldap->bind;
17	if($mesg->is_error){
18	 die "Bind error: ".$mesg->error;
19	}
20
21	# search for job title = "Secretary"
22	$mesg = $ldap->search(base => "o=Democorp,c=AU",
23			   filter => "(title=Secretary)"
24			   );
25	if($mesg->is_error){
26	 die "Search error: ".$mesg->error;
27	}
28
29	foreach $entry ($mesg->entries) {
30
31	 # report entry's common name (cn) and telephone number
32	 print $entry->get_value('cn'), "\t",
33	    $entry->get_value('telephoneNumber'), "\n";
34
35	}
36
37	print "Finished\n";
38
39	$ldap->unbind;

LDAP プログラムに関するコメント

行 13

yourhost.com を Democorp ディレクトリがインストールされて実行されているマシンの名前に置換します。

行 16

これは匿名のバインドです。 DN またはパスワードは指定されていません。

行 17

常に、リクエストの結果を確認します。

行 22

クエリを実行し、エラーがないか確認します。

行 29

このループは検索によって見つかったエントリごとに実行されます。 この時点でエラーの可能性はありません。

行 32 および 33

見つかったエントリを出力します。 通常の場合、以下の出力を生成します。

Juliet LEVY524 3637

Craig LINK544 3697

Terry SALISBURY488 0288

Winifred LEWIS534 3657

Ian NATHAN437 8908

Cheryl APPLEBY498 0308

Finished

行 39

接続を閉じます。