Sun Directory Services 3.1 管理ガイド

例: dsimport の使用方法

この例では、マッピングファイルを作成し、dsimport を使ってテキストファイルから情報の一括読み込みを行います。

入力ファイル

LDAP ディレクトリにインポートするファイルは、社員の基本的情報を持つ会社のオンラインディレクトリサービスから抽出したファイルです。

このファイルの内容を例 5-1 に示します


例 5-1 入力ファイルの例

Rob Green, rgreen@london.XYZ.com, phone x 44 1234, marketing communications
manager
Jean White, jwhite@london.XYZ.com, phone x44 1123, documentation manager
Susan Brown, sbrown@london, phone (44) 123 45 67 00, technical writer
Karen Gray, kgray@london, tel (44) 123 45 67 01, engineering project manager
Steve Black, sblack@eng, x44 1122, software development engineer
Felipe Diaz Gonzalez, fdgonzalez@eng, x41 2233, software development
engineer
Anne Marie de la Victoire, amvictoire@paris.xyz.com, x33 3344, software
support engineer
DURAND Pierre, pdurand@paris, tel 33 1133, software support engineer

このファイルでは、1 人の社員が 1 行に定義されています。各行の情報は次の順になっています。

情報のレベルは社員ごとに必ずしも一定ではありません。たとえば、電子メールアドレスが完全に指定されていないものや、電話番号が内線番号だけのものがあります。また、姓が名前より前にある場合もあります。

LDAP ディレクトリに作成するエントリの情報レベルを一定にしたい場合は、必要に応じてソースファイルの訂正を行うか、インポート後に Deja ツールで訂正を行う必要があります。

マッピングファイル

ディレクトリ管理者は、名前付きコンテキスト ou=People, o=XYZ, c=US にすべての社員のエントリを作成するものとします。マッピングファイルでエントリを指定するトークンは、「Common」セクションの BASE_DN トークンです。

情報は一度だけインポートします。したがって、マッピングファイルに「Export」セクションを定義する必要はありません。「Dynamic」セクションは必須です。「Condense」セクションのオブジェクトクラスの定義も必須です。

ディレクトリ管理者が作成したマッピングファイルの例を表 5-2 に示します。

表 5-2 マッピングファイルの例
# This example file for dsimport contains employee entries
# to be created as inetOrgPerson objects,in the LDAP directory.

Front-End: EXAMPLE

Table: People

	Common:
		BASE_DN=ou=People, o=XYZ, c=US

	Dynamic:
		LINE => $cn, $rest
		MATCH_FILTER=(&(objectClass=inetOrgPerson)(cn=$cn))
		ALL_FILTER=(&(objectClass=inetOrgPerson)(cn=*))

	Import:
		Extract:
			LINE => $fn $ln, $mail, $telephoneNumber, $description
		Condense:
			cn=$fn $ln
			snT=$ln
			objectClassT=string2instances("top person
organizationalPerson inetOrgPerson", " ")
		Build:
			dn=cn=$cn, $BASE_DN
			sn=$snT
			mail=$mail
			telephoneNumber=$telephoneNumber
			description=$description
			objectClass=$objectClassT

「Condense」セクションには、inetOrgPerson オブジェクトクラスの継承ツリーが指定されています。

「Build」セクションには、inetOrgPerson オブジェクトクラス固有の必須属性や、このオブジェクトクラスによって継承される必須属性がすべて指定されています。その他、このセクションには、ディレクトリ管理者が必要と判断したこのオブジェククラス固有の任意属性が指定されています。

dsimport の実行

「入力ファイル」で定義したマッピングファイルを使って、「マッピングファイル」で用意したファイルをインポートするには、次の引き数で dsimport を実行します。


# dsimport -h hostname -D cn=admin,o=xyz,c=us -w secret -m mapping.file 
-f EXAMPLE -t People input.file

管理者の識別名とパスワードは、コマンド行に必ず指定する必要はありません。これらのパラメータを省略すると、dsimport がこの情報を dsserv.conf ファイルから読み取ります。この利点は、管理者の識別名とパスワードが ps コマンドによって表示されないことです。

このコマンドを実行すると、次のメッセージが表示されます。

Lines read: 9, processed: 8  Entries: added 10, modified 0, deleted 0, errors 0

行カウントには空白行も含みます。作成されるエントリ数は、ファイルの行数よりも多くなります。これは、dsimport コマンドがルートエントリ (この例では、o=xyz, c=us) を自動的に作成するためです。