Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)

cronypxfr でシェルスクリプトを使用する

NIS 管理者は、各マップに対する crontab エントリを個々に作成するという方法ではなく、root の crontab コマンドでシェルスクリプトを実行してすべてのマップを定期的に更新するという方法を使用することもできます。 マップ更新シェルスクリプトのサンプルは、/usr/lib/netsvc/yp ディレクトリに入っています。 スクリプト名は、ypxfr_1perdayypxfr_1perhourypxfr_2perday です。 これらのシェルスクリプトを更新または置換することによって、容易にサイト要件に適合させることができます。 例 9–1 は、デフォルトの ypxfr_1perday シェルスクリプトを示しています。


例 9–1 ypxfr_1perday シェルスクリプト


#! /bin/sh
#
# ypxfr_1perday.sh - Do daily yp map check/updates
PATH=/bin:/usr/bin:/usr/lib/netsvc/yp:$PATH
export PATH
# set -xv
ypxfr group.byname
ypxfr group.bygid
ypxfr protocols.byname
ypxfr protocols.bynumber
ypxfr networks.byname
ypxfr networks.byaddr
ypxfr services.byname
ypxfr ypservers

このシェルスクリプトは、root の crontab が毎日実行されるとマップを 1 日に 1 回更新します。 NIS 管理者は、1 週間に 1 回、1 ヶ月に 1 回、または 1 時間に 1 回などといった頻度でマップを更新するスクリプトを使用できますが、マップを頻繁に伝播するとパフォーマンスが低下するので注意してください。

NIS ドメインに対して構成された各スレーブサーバー上で同じシェルスクリプトを root で実行してください。 各サーバー上の実行時間を変更して、マスターサーバーが動作不能にならないようにしてください。

特定のスレーブサーバーからマップを転送する場合は、シェルスクリプトの ypxfr-h machine オプションを使用してください。 シェルスクリプトに記述するコマンドの構文は、次のとおりです。

# /usr/lib/netsvc/yp/ypxfr -h machine [ -c ] mapname

machine は転送するマップが存在するサーバー名です。mapname は要求されたマップ名です。 マシンを指定することなく -h オプションを指定すると、ypxfr はマスターサーバーからマップを取得しようとします。 ypxfr 実行時に ypserv がローカルに実行されていない場合は、ypxfr がローカル ypserver に現在のマップ要求の取消しを送信しないよう、-c フラグを使用してください。

-s domain オプションを使用すると、別のドメインからローカルドメインにマップを転送できます。 これらのマップは、各ドメインにおいて同じでなければなりません。 たとえば、2 つのドメインが同じ services.byname マップおよび services.byaddr マップを共有することがあります。 また、より細かい制御を行うための rcp または rdist を使用してファイルを複数のドメインに転送することもできます。