nisaddent コマンドは、テキストファイルまたは NIS マップからの情報を NIS+ テーブルにロードします。また、NIS+ テーブルの内容をテキストファイルに逆にダンプできます。NIS+ テーブルを初めて生成 (populate) する場合、『Solaris ネーミングの設定と構成』を参照してください。すべての前提条件と関連作業が説明してあります。
nisaddent を使用して、情報をある NIS+ テーブルから別のテーブルに (たとえば、別のドメインの同じ種類のテーブルに) 転送できますが、直接には転送できません。まず、テーブルの内容をファイルにダンプし、次にそのファイルを他のテーブルにロードする必要があります。ただし、ファイル内の情報は正しくフォーマットされていなければなりません。各テーブルに必要なフォーマットを付録 C 「NIS+ テーブルの情報」 で説明します。
情報をテーブルにロードするとき、置換 (replace)、追加 (append)、またはマージ (merge) の 3 つのオプションを自由に使用できます。追加オプションは、ソースエントリを NIS+ テーブルに単純に追加します。置換オプションの場合、NIS+ は、まずテーブル内のすべての既存エントリを削除し、次にソースからエントリを追加します。大規模なテーブルでは、これによって多くのエントリセット (1 セットは既存エントリの削除用、他のセットは新エントリの追加用) がテーブルの .log ファイルに追加され、/var/nis 内の領域を占有し、複製への伝達に長時間を要することになります。
マージオプションでは、置換オプションと同じ結果が得られますが、異なるプロセスを使っており、複製に送信する動作数が大幅に減少します。マージオプションの場合、NIS+ は 3 種類のエントリを別に処理します。
ソース内にだけ存在するエントリは、テーブルに「追加」される
ソースとテーブルの両方に存在するエントリは、テーブル内で「更新」される
NIS+ テーブルにだけ存在するエントリは、テーブルから「削除」される
大きなテーブルを更新する場合で、内容の変更があまりないときは、マージオプションを使用するとサーバーは多くの動作を節約できます。ソース内で重複していないエントリだけを削除する (置換オプションは全エントリを無差別に削除する) ため、重複エントリごとに 1 回の削除と 1 回の追加動作を省略できます。
初めてテーブルに情報をロードする場合、テーブルオブジェクトに対する作成権が必要です。テーブル内の既存情報を上書きする場合、テーブルに対する変更権が必要です。
テキストファイルから情報をロードするには、以下のように入力します。
/usr/lib/nis/nisaddent -f filename table-type [domain] /usr/lib/nis/nisaddent -f filename -t tablename table-type [domain]
NIS マップから情報をロードするには、以下のように入力します。
/usr/lib/nis/nisaddent -y NISdomain table-type [domain] /usr/lib/nis/nisaddent -y NISdomain -t tablename table-type [domain] /usr/lib/nis/nisaddent -Y map table-type [ domain] /usr/lib/nis/nisaddent -Y map -t tablename table-type [ domain]
NIS+ テーブルから情報をファイルにダンプするには、以下のように入力します。
/usr/lib/nis/nisaddent -d [-t tablename tabletype ] > filename
ファイルの内容を NIS+ テーブルに転送するには、いくつかの方法があります。
-f を単独で指定すると、table-type の内容が filename の内容に置き換えられます。
nisaddent -f filename table-type
-f と -a を同時に指定すると、filename の内容が table-type に「追加」されます。
nisaddent -a -f filename table-type
-f と -m を同時に指定すると、filename の内容が table-type の内容に「マージ」されます。
nisaddent -m -f filename table-type
次に示す 2 つの例では、テキストファイル /etc/passwd.xfr の内容が NIS+ passwd テーブルにロードされます。最初の例ではローカルドメインに、 2 番目の例では別のドメインのテーブルにロードされます。
rootmaster# /usr/lib/nis/nisaddent -f /etc/passwd.xfr passwd rootmaster# /usr/lib/nis/nisaddent -f /etc/shadow.xfr shadow rootmaster# /usr/lib/nis/nisaddent -f /etc/passwd.xfr passwd sales.doc.com. rootmaster# /usr/lib/nis/nisaddent -f /etc/shadow.xfr shadow sales.doc.com.
/etc ディレクトリのファイルから NIS+ passwd テーブルを作成する場合は、nisaddent を 2 回 (/etc/passwd ファイルと /etc/shadow ファイルに対して 1 回ずつ) 実行する必要があります。
もう 1 つの方法では、stdin をソースとして使います。しかし、stdin では -m オプションを使えません。次に例を示します。リダイレクト (>) やパイプ (|) を使用することは可能です。ただし、別のドメインに出力が行われるような形でパイプを使用することはできません。
作業 |
コマンド |
---|---|
リダイレクト |
cat filename > nisaddent table-type |
リダイレクト処理後、追加する |
cat filename > nisaddent -a table-type |
リダイレクト処理後、別のドメインに追加する |
cat filename > nisaddent -a table-type NIS+ domain |
パイプ |
cat filename | nisaddent table-type |
パイプ処理後、追加する |
cat filename | nisaddent -a table-type |
NIS+ テーブルが、オートマウンタテーブルの 1 つであるか標準以外のテーブルである場合、-t オプションと NIS+ テーブルの完全な名前を追加します。
master# nisaddent -f /etc/auto_home.xfr ¥ -t auto_home.org_dir.doc.com.key-value master# nisaddent -f /etc/auto_home.xfr ¥ -t auto_home.org_dir.doc.com. key-value sales .doc.com.
NIS マップから情報を転送する方法は 2 つあり、NIS ドメインを指定するか、または実際の NIS マップを指定します。ドメインを指定した場合、NIS+ は、table-type に基づいて、/var/yp/nisdomain 内のどのマップファイルをソースとして使うかを判断します。/var/yp/nisdomain は「ローカル」ファイルでなければなりません。
NIS+ テーブル形式 |
NIS マップ名 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NIS ドメインの指定によって転送するには、-y (小文字) オプションを使い、NIS+ テーブル形式に加えて NIS ドメインを指定します。
「テーブルの置換」
nisaddent -y nisdomain table-type
「テーブルの追加」
nisaddent -a -y nisdomain table-type
「テーブルのマージ」
nisaddent -m -y nisdomain table-type
デフォルトでは、nisaddent は NIS+ テーブルの内容を NIS マップの内容に置き換えます。追加またはマージを行うには、-a または -m のオプションを使います。次の例では、対応する NIS マップ (passwd.byname
) からの NIS+ passwd テーブルを old-doc ドメインにロードします。
rootmaster# /usr/lib/nis/nisaddent -y old-doc passwd
2 番目の例でも同じことを行いますが、ローカルドメイン doc.com. の代わりに、sales.doc.com. ドメインに対して行います。
rootmaster# /usr/lib/nis/nisaddent -y old-doc passwd sales.doc.com.
NIS+ テーブルが、オートマウンタテーブルの 1 つであるか非標準テーブルである場合、そのソースがファイルであるかのように、-t オプションと NIS テーブルの完全な名前を追加します。
rootmaster# nisaddent -y old-doc ¥ -t auto_home.org_dir.doc.com. key-value rootmaster# nisaddent -y old-doc ¥ -t auto_home.org_dir.doc.com. key-value sales.doc.com.
マップファイルをドメイン用に使うのではなく、特定の NIS マップを指定したい場合、-Y (大文字) オプションを使い、マップ名を指定します。オプションを見つけやすいように、次の例では太字にしています。
rootmaster# nisaddent -Y hosts.byname hosts rootmaster# nisaddent -Y hosts.byname hosts sales.doc.com.
NIS マップがオートマウンタマップの 1 つであるか非標準マップである場合、-Y オプションと -t オプションを組み合わせます。
rootmaster# nisaddent -Y auto_home -t auto_home.org_dir.doc.com. key-value rootmaster# nisaddent -Y auto_home -t auto_home.org_dir.doc.com. key-value sales.doc.com.
NIS+ テーブルの内容をファイルにダンプするには、-d と -t のオプションを使います。-d オプションは、ダンプするようコマンドに指示します。-t オプションは、NIS+ テーブルを指定します。
rootmaster# nisaddent -Y auto_home -t auto_home.org_dir.doc.com. key-value rootmaster# nisaddent -Y auto_home -t auto_home.org_dir.doc.com. key-value sales.doc.com.