ワークステーションのおと一朝 リスト 2 amd のマップを追加した /var/yp/MakefiIe # amd のマップファイルがあるディレクトリ AMAPDIR=/etc/amap a11 : passwd group hosts ethers networks rpc services protocols \ netgroup bootparams aliases publickey netid netmasks c2secure \ timezone autO . master autO . home \ home . amap home. amap. time : $ (AMAPDIR) /home. amap $ (MAKEDBM) $ (AMAPDIR) /home. amap $ (YPDBDIR) / $ (DOM) /home. amap ; @touch home. amap. time ; $ ( AMAPDIR) /home home. amap : home. amap. time @echo "u $ (NOPUSH) ] ; then echo "pushed home. amap" ; fi $ (NOPUSH) ] ; then $ (YPPUSH) -d $ (DOM) home ・ amap ; fi pdat ed home. amap ・ amap : /etc/amap というディレクトリの下に置きます。そして、 /var/yp/astec/home ・ amap ・ pag /var/yp/astec/home ・ amap ・ dir # ls /var/yp/astec/home. amap ・ /var/yp/astec/home. amap # /usr/etc/yp/makedbm . /home # cd /etc/amap ルート権限で次のようにします。 ・ amap す。このディレクトリに dbm 形式のファイルを置く ・ amap ・ pag という dbm 形式のファイルができていま ・ ls で石寉認すると、たしかに home. amap. dir と home ているのなら /var/yp/ascii となります。 です。たとえは、 ascii という NIS ドメイン名を使っ を指定しています。 astec というのは、 NIS ドメイン名 dbm 形式に変換し、 /var/yp/astec の下に置くこと ・引数で、カレントディレクトリにある . /home. amap を イルの内容を dbm 形式に変換するものです。 ・ makedbm コマンドは、その名のとおり与えられたファ に登録されました。簡単でしよう ? 意味は次のとおりで これで、 /home に対応するマップ home ・ amap が NIS と、 NIS サー 76 ーに登録したことになります。 はかのマップファイルも、同しようにして登録できま UNIX MAGAZINE 1993.1 では、どのように NIS にデータを登録しているのでし を登録します。 ( a ) ー 2 ~ 13 を実行し、 NIS に新しい /etc/hosts の内容 たかどうかを調べているようですね。変更されていれば、 容を NIS に央させたあとで、 /etc/hosts か変更され ているところをみると、これは、前回 /etc/hosts の内 をくらべています。 (a)-9 で hosts. time を touch し ファイル /var/yp/hosts ・ time と /etc/hosts の時間 さい ) 。 hosts というターゲットに注目すると、 ( a ) ー 1 で、 「 UNIX 流フ。ログラミング」かマニュアルを参照してくだ make 自体については、説明は不要ですね ( 本誌の のリスト 1 ) 。 はずです。ちょっと、なかを覗いてみましよう ( 前ページ make で更新するのですから、当然、 Makefile がある よっ。 プファイルも、このように簡単に更新できるようにしまし タベースも更新されるようになっています。 amd のマッ /var/yp にいって make を実行するだけで NIS のデー NIS で管理されているファイルは、変更があった場合、 です。 とりあえす登録できましたが、これだけでは更新か面倒 /var/yp/Makefi1e への糸巫み す。
ワークステーションのおと・一 - a11 : : DONE # ASTEC , lnc . # Makefi1e fo て amd and automount maps リスト 4 amd のマップをする MakefiIe MAPS home. amap pr0J ・ amap common ・ amap src ・ amap pkg ・ amap . SUFFIXES : . conf . amap . conf . amap : @touch DONE cd /var/yp ; make DONE: : $(MAPS) . /toamap $ * ss xyz sd01c rm -f $(MAPS) clean: 78 で自重加勺におこなうことカ、きます。 を変更したあとで make を実行すれば、 NIS への登録ま 下に MakefiIe という名前で置いておき、 conf ファイル とをすればよいのです。リスト 4 の内容を /etc/amap の できるではありませんか 0/var/yp/Makefi1e と同じこ よく考えると、 1 と 2 の竹喋は make を使えば自動化 3. /var/yp の下で make を実行する。 2. toamap でマップファイルに変換する。 1. conf ファイル (home. conf など ) を書く。 での流れをまとめてみましよう。 conf ファイルからマップを生成し、 NIS に登録するま きます。 amd のマップに変換するスクリプト toamap を載せてお にしてあるのです。リスト 3 に、この設定ファイルから amd の機能を制限することにより、簡単に使えるよう という意味です。 リ /disk/sd01c/ss にある ・ディレクトリ /home/ss は、言 t 算機 xyz のディレクト conf から生成する ・ /home の下にあるディレクトリについては、 home . のファイルは、 と書いておくと自重加勺に生成するようになっています。 amd の起動 やっと amd の起動までたどり着きました。 amd で管理するディレクトリとそのマップファイルを整 理しておきましよう。 /home /proj home. amap pro. 」・ amap src. amap /common common. amap /pkg pkg. amap このようにしたければ、ちょっと長くなりますが、 # amd /home home. amap /proJ proj ・ amap /src src. amap /common common. amap /pkg pkg ・ amap と、ルート権限でコマンド行から起動すればいいでしょ う。もちろん、計算機の起動第叔こ amd カ起きるようにし たいのなら、 /etc/rc. local などにこの言当を入れてお きます。 automount を使うところまで書きたかったのですが、 気力が尽きてしまいました。来月こそ、 automount を ! ( さかした・しゅう ASTEC) 連載 100 回まで、あと 50 回。頑張るで ! UNIX MAGAZINE 1993.1
ワークステーションのおと一⑩ 図 1 amd の動き の実体との対表で、次のようになっています。 前述したとおり、マップは論理的なディレクトリ名とそ かなくてはなりません。 amd をこのように動かすためには、ます、マップを書 amd の設定 ↓ ↓ アンマウントされます。 5. /home/ss へのアクセスが一定時間なければ、自重加勺に sd01c / ss へのシンポリック・リンクを張ります。 こで、 amd はさらに /home/ss から /a/xyz/disk/ ss などというおかしなところにあっては困ります。そ 4. 自分のホームディレクトリが /a/xyz/disk/sd01c/ mount xyz : /disk/sd01c/ss /a/xyz/disk/sd01c/ss な操作に相当します。 に実体を NFS マウントします。こ刎列では、次のよう 3. amd は、要求のあった言 t 算機のディレクトリ /a の下 実体をみつけます。 (amd や automount ではマップと呼びます ) を見て、 というディレクトリ ) との対応が登録されている対庵表 (s) と、その実体 ( 言 t 算機 xyz の /disk/sd01c/ss 2. amd は、論理的なディレクトリ名 ( ここでは /home/ と、 /home/ss へのアクセスが発生します。 1. 私 (ss) が、ある計算機にログインしたとします。する ようになっています ( 図 1 ) 。 との対応づけをおこなっているのです。具一勺には、次の す。 amd は、この /home/ss と xyz : /disk/sdOIc/ss xyz の /disk/sd01c/ss というディレクトリにありま ても /home/ss にあります。ところが、実体は計算機 私のホームディレクトリは、どの言 t 算機にログインし xyz:/disk/sd01c/ss ↓ NFS マウント ↓ /a/xyz/disk/sd01c/ss シンポリック・リンク /home/ss 74 1. マップは、 amd て管理するディレクトリごとにありま す。この例では、 /home と / p て oj 、 /src 、 /common 、 /pkg のディレクトリごとにマップがあります。 2. このマップは NIS で管理できます。したがって、 amd を使えは、 /etc/fstab をいちいち書き換える必要は なくなります。 3. 管理するディレクトリにどのマップを使用するかの対 応は、 amd を起動するときの引数で与えます。これを NIS に登録し、すべて NIS で管理することもできます。 /home/ss のマップを例にとってみましよう。簡単に 書くと、マップの中身は次のようになります。 ss hOSt !=xyz;type :=nfs ; \ rhost :=xyz;rfs :=/disk/sd01c/ss\ host==xyz;type :=1ink;fs:=/disk/sd01c/ss ; これは、次のような未です。 ss ディレクトリ /home/ss は次の位置にある。 hOSt ! =xyz アクセスがあった計算機が xyz でない場合は以降の 言こ従う。 type :=nfs /home/ss は nfs の先にある。 rhost :=xyz ;rfs : =/disk/sd01c/ss /home/ss は言 t 算機 xyz の /disk/sdOIc/ss にあ る。 host==xyz アクセスがあった言 t 算機が xyz の場合は以降の言当 fs:=/disk/sdOIc/ss るようになる。 /home/ss はシンポリック・リンクでアクセスでき type : =link に従う。 UNIX MAGAZINE 1993.1 う。 amd のマップは、これ以外にもさまざまなものか記 common ・ amap 、 pkg ・ amap という名前にしておきましょ て、それぞれ home. amap と proj ・ amap 、 src. amap 、 します。マップは、とりあえすファイルに書いておい クトリごとに、上の例の書き方に従ってマップを用意 /home と /proj 、 /src 、 /common 、 /pkg のディレ /home/ss は /disk/sd01c/ss にある。
ワークステーションのおと一⑩ リスト 3 amd のマップを生成するスクリプト toamap # ! /bin/sh # convert conf fi1e tO amd maps # ASTEC , lnc . if [ $ # -ne 1 ] then echO 'usage toamap く map name> ' printf "%s\thost !=%s;type :=nfs;rhost :=%s, exit 1 MAP=$I CONFIG=$MAP . conf OUTFILE=$MAP. amap BEGIN { printf "/defaults 广 $ / { next; } た # / { next; } if ( substr($3,1,1) printf "rfs: printf "rfs else { opts : =rw, intr , grpid,noquota\n" printf "host==%s;type:=link; ” , $ 2 if ( substr($3,1,1) printf "fs :=%s\n" , $ 3 printf "fs:=/disk/%s/${key};\n" , $ 3 ・ else { ) く $CONFIG > $OUTFILE exit 0 ようか。 /etc/hosts に関する記述はすこし複雑なので、 /etc/netmasks のはうを見ることにしましよう ((b)-l (b)-2: さきほど、手でおこなったのと同じように、 make- dbm コマンドを使って dbm 形式に変換し、その 内容を /var/yp/astec の下に置いて NIS に登 録しています。 (b)-3 : /var/yp/netmasks. time を touch することに より、更新の日駭リを言求しています。 (b)-4 : たんなるメッセージの表示です。 (b)-5 : yppush コマンドを使って、 NIS スレープサーバ ーへ更新した /etc/netmasks の内容を伝えてい ます。 (b)-6 : "yppush をした " というメッセージの表示てす。 UNIX MAGAZINE 1993.1 たとえは、さきほどの amd のマップは /etc/amap/ を生成するようにしています。 わないので ) もうすこし簡単な表からこの amd のマップ す。そこで ASTEC では、 ( こオび丿まの amd の機能は使 はかりでなく、修正や追加のときに間違ってしまいそうで 対表なのに、ちょっと複雑です。これでは、面倒くさい ださい。たんなる論理的なディレクトリ名とその実体との さきほど例に挙げた amd のマップをもう 1 度見てく マップを書くのはひと仕事 加した MakefiIe をリスト 2 に示します。 追加すれはよいのです。 amd のマップに関する記述を追 しい amd のマップの更新についても、同しような言己を それほど難しいことをしているわけではありません。新 home . conf というファイルに 77