usr - みる会図書館


検索対象: UNIX MAGAZINE 2004年5月号
17件見つかりました。

1. UNIX MAGAZINE 2004年5月号

図 1 1 3 5 6 7 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 図 2 連載 / UN Ⅸ便利帖ー 0 FreeBSD の /etc/crontab # /etc/crontab ー root ' s crontab for FreeBSD 1 . 21 . 2 . 3 2000 / 12 / 08 10 : 56 : 07 obrien Exp $ PATH=/etc : /bin:/sbin: /usr/bin: /usr/sbin SHELL=/bin/sh # $FreeBSD: src/etc/crontab,v HOME=/var/10g #minute hour * / 5 mday month wday who root # rotate 10g files every hour, 0 if necessary # do daily/weekly/monthly maintenance 1 15 30 3 4 5 6 1 root root C ommand /usr/libexec/atrun newsyslog periodic monthly periodic weekly periodic daily # time zone change # does nothing , if # See adjkerntz(8) 1 , 31 adjustment for wall cmos clock, you have UTC cmos clock. for details . root adjkerntz —a インストール終了時のメッセージ Configuration hints : Deactivate the 'periodic' commands in /etc/crontab Activate the ) periodic ' commands in anacrontab Copy /usr/local/etc/anacrontab. sample t0 /usr/local/etc/anacrontab Add 'anacron' to /etc/rc .10Ca1 Read anacron(8) and anacrontab(5) されていないようです。 インストール Linux のいくつかのディストリビューションでは標準で anacron カ吏えますが、 FreeBSD では自分でインストー ルしなければなりません。とはいっても、上記のページか らソースなどをダウンロードする必要はなく、 port または package を用いて簡単にインストールできます。 たとえば p 。 rt を利用するのなら、次のようにします 2 % cd /usr/ports/sysutils/anacron % sud0 make install anacron のインストールには GNIJ make や gettext ライプラリが必要なので、これらがシステムに入っていな いと自動的にインストールされます。その場合は、作業に 2 この例の sudo コマンドは、一時的に管理者権限を得るためのものです。 anacron と同じく、 port を使って /usr/ports/security/sudo か らインストールできます。 0 160 すこしよぶんな時間がかかるかもしれません。 インストールが終了すると、最後に図 2 のようなメッ セージカ咄力されます。 以降は、このメッセージに従って作業を進めることにな ります ( 私は、このメッセージの最後に書かれているマニュ アルを真っ先に読みましたが・ まず、 /usr/local/etc/anacrontab. sample ( 図 3 ) を 読みましよう。このファイルは cron に対する crontab と 同じく、 anacron で動かすコマンドを一覧表にしたもので す。 このファイルの 1 行目では、 crontab と同様にして変 数を定義しています。その後に数行のコメントが続き、 8 ~ 10 行目にコマンドを動かすための指定が記述されてい ます。これらは、それぞれ periodic コマンドに daily 、 UNIX MAGAZ 工 NE 2004.5

2. UNIX MAGAZINE 2004年5月号

連載 / UN Ⅸ便利帖ー 0 リスト 1 6 日おきに anacron を実行 0 -s -t 3 , 9 , 15 , 21 /usr/local/sbin/anacron -u 各コマンドを実行せずに、実行した日付だけを更新し ます。 各コマンドを逐次実行します。前のコマンドカ鮗了す るまで次のコマンドを起動しません。 ーⅡ遅延時間を無視してコマンドを逐次実行します。 anacron をフォアグラウンドで実行します。 -q 上記の一 d と同時に指定すると、メッセージカ咄力さ れません。 標準以外の anacrontab を指定します。 -V バージョン情報を表示して終了します。 -h 簡単な利用法を表示して終了します。 162 なして説明します。 こでは 2 つをほ司じ状態とみ 4 またはサスペンド状態かもしれませんが、 開けてスリープ状態 4 を解除し、使い終えたら蓋を閉じて ノート PC の利用形態をみると、使い始めるときに蓋を そうはいかないでしよう。 これでもなんとかなりますが、個人のノート PC の場合は 置された PC なら、電源を朝入れて夜切ることが多いので、 自体を毎日起動しなければなりません。大学の演習室に設 る必要が出てきます。この場合、上記の定だけでは、 PC と、 anacron を毎日 ( すくなくとも 1 日に 1 回 ) 起動す しかし、 periodic daily " を毎日実行させようとする /usr/local/sbin/anacron # ! /bin/sh anacron が実行されるようになります。 保存し、実行権限を与えました。これで、毎起動時に これを /usr/local/etc/rc. d/anacron. sh という名前で スクリプトの内容は以下のようにごく簡単なもので、 ことにしました。 動スクリプトを /usr/local/etc/rc. d ディレクトリに置く うが後々のメンテナンスなどがしやすいだろうと考え、起 りも、ほかのデーモンプロセスと同様の方式で起動したほ た。しかし、私は / etc ディレクトリにファイルを置くよ anacron を /etc/rc. local から実行しなさいとありまし インストール直後に表示されたメッセージ ( 図 2 ) には、 anacron 実行のタイミンク スリープ状態にすることが多いようです。したがって、シ ステムにとくに問題がなければ、再起動はほとんどおこな われません。このような場合も、 anacron をすくなくと も 1 日に 1 回実行するには、スリープを解除する時点で anacron を実行すればよいでしよう。 FreeBSD では、スリープ状態が解除されると /etc/rc. resume というスクリプトが実行されます。標準では、、目 覚めた " 日付と時刻を記録して sync コマンドを実行する だけですが、このスクリプトに、 /usr/local/sbin/anacron /usr/local/etc/rc . d/anacron. sh のどちらか 1 行を追加すれば、スリープの解除と同時に anacron が実行されます。もちろん、スリープと解除の動 作を 1 日に 1 回以上おこなう必要はありますが、そのタイ ミングで anacron も確実に起動されます。 さきほど書いたように、 anacron は最初に anacrontab ファイルを読み込み、そこに記述されているコマンドが 前回に実行された日付を知るために /var/spool/anacron 以下のファイルを読み込みます。そして、 anacrontab に 書かれている各コマンドが、前回の実行日から指定した期 間が経っても実行されていないときに限り、そのコマンド を実行します。ですから、 1 日に 2 回以上 anacron が起 動されても、 periodic daily" が実行されるのは 1 回だ けということになります。したがって、スリープを解除し た時点での anacron の起動は、 1 日 1 回以上ノート PC の蓋を開ける人にとって理想的な anacron の実行環境と いうことになるでしよう。 さらに念には念を入れて、毎日決まった時刻に anacron を起動するよう crontab に記述しておけは万全です。た とえば、リスト 1 のような行を /etc/crontab に追加する と、毎日 6 時間おきに anacr 。Ⅱか起動されます。こうし ておけば、 1 日に 1 回もノート PC をスリープさせること なく仕事をし続けることがあっても、 anacron か起動する 可能性が大きくなります。 ( みやした・けんすけ京都女子大学 ) UNIX MAGAZINE 2004.5

3. UNIX MAGAZINE 2004年5月号

ドライ : ' 作第域デイしグトリ : 自動選択 書き込みドライア 0 能を R 0 、 0 い刈 マスターセッション CD は入っていません 連載 /Red Hat Linux のツールたち 図 21 イメージファイルへの〕ロ方法の尺 ・ - 山 tom お断せ「 ec 絶 3 / お Shar d00 P as 005e where the contents Of 物朝「 e は 0 ツ shoUd located 00 the CD: ' 0 0 「 0 猷 di は明′ CD ) 奩期 d 専曲仙 pa 物 ( - / い h 町 do の ー 0 Addwithcustompath ・ 図 20 イメージファイル作成画面 : をにト 03 ヨー MakeCD CD/ イメージ情報 ・オリジナル、ファイル / ティレクトリ ロ朝「 d 佼用洳空を 割除ー」目聖些曵 . 」 ツ ; しグい ) のみ表永 オーディオトツック マスター作ま 書き込み トラック第除 メインメニスーへ キャンセル 図 22 ディレクトリの〕ロ 示を新 図 19 のような画面に切り替わります。左側に表示されて いるメニューボタンの海未は、以下のとおりです。 ・ CD / イメージ情報 : 読込みドライプに挿入された CD- ROM や、作業領域に保存されているイメージファイル の情報を表示します。 ・読み込み : CD-ROM からトラックデータを読み出し、 表示を真新 ハードディスク上の作業領域にイメージファイルとして 保存します。 ァイルプラウサ下の入力ポックスに、パス名を直接入力し ・照合 : 作業領域に保存したイメージファイルと、 CD- てもかまいません ) 、 [ 追加 ] ボタンをクリックします。 ROM のトラックデータとの比較をおこないます。 すると、図 21 のようなウインドウが表示されます。 ・オーディオトラック再生 : 作業領域に保存されている のウインドウでは、指定したディレクトリをイメージファ WAVE ファイルを再生します。 イルのどのパスに割り当てるかを選択します。選択肢は以 ・マスター作成 : ハードディスクのディレクトリを指定し 下の 3 つです。 て、イメージファイルを作成します。 ・ Add to root directory of CD 書き込み : 作業領域のイメージファイルを CD-R に書 指定したディレクトリを、イメージファイルのルート・ き込みます。 ディレクトリとして扱います。この例の場合には、 /usr ・トラック削除 : 作業領域に保存されたイメージファイル /share/doc がルート・ディレクトリになります。 を削除します。 ・ Add with full path ・メインメニューへ : 図 14 の画面に戻ります。 指定したディレクトリの絶対パスを、そのままイメージ こでは、前回と同様、 /usr/share/doc ディレクトリ ファイル中のパスとして使います。今回の例でいえば、 以下のファイルを CD-R に書き込んでみましよう。この /usr/share/doc ディレクトリは、作成された CD-R 場合には、、、マスター作成 " メニューでイメージファイル でも同様のパスになります。 を作成し、それを、、書き込み " メニューで CD ー R に書き込 ・ Add with custom path みます。以下、順を追って説明します。 指定したディレクトリを上記以外のパスに割り当てたい ときに選択します。この場合、図 21 下部の入力ポック イメージファイルの作成 スには、イメージファイル中の糸寸パスを入力します。 図 19 で [ マスター作成 ] をクリックすると、図 20 の ような画面に切り替わります。 こでは前回と同様、単純に /usr/share/doc をイメー 画面右下にファイルプラウザが表示されているので、 ジファイルのルート・ディレクトリにするので、、、 Add to れを利用して /usr/share/doc ディレクトリを指定し ( フ root directory of CD" を選んで [OK] ボタンをクリック Make CD CD/ イメージ情報 ~ ドライ : 藤ヤ 作第城デイしグトリ : 自動選 書き込みドライア POEER 0 、 0 D 、 1 い刈 マスターセルョント ( “の第可ルトい so - ッダ le, 岐ゆのツ マスタ、セッシ強ンをを ーすリジナル・フ , イル / ティレクト屮 ~ - CD は入っていません コ聞 3 1 コ a コ朝ロ コ印 1 師、 第 ツ sh を d00 P デイしグトッあみ第 ーディオトラッグ 書き込み トラみク除 ツィッメニまー、 物・ / ′ sh 田 d00 ・、 / 140 UNIX MAGAZINE 2004.5

4. UNIX MAGAZINE 2004年5月号

連載 / U N Ⅸ便利帖ー 0 anacrontab. sample PATH=/bin : /sbin : /usr/bin : /usr/sbin 図 3 1 2 3 4 5 6 7 8 10 # days # delay # id # days 1 30 make sure the command is executed at least every delay in minutes, before a command starts id Of a command ' days ) days delay 5 15 60 id daily weekly monthly command periodic daily periodic weekly periodic monthly weekly 、 monthly という引数を与えて実行するように書 かれています。行頭の数字はコマンドを動かす間隔を日数 で指定したもので (days) 、その次は anacron がこのファ イルを読んでから何分後にコマンドを起動するか (delay) 、 そして、このコマンドに与える ID (id) が指定されてい delay の指定で、各コマンドの起動順序をある程度決め ることができます。これによって、、、同時に動いては困る " ようなコマンドの実行を制御するわけです。 anacron に引 数を与えて、コマンドの起動順序をきちんと指定すること もできますにれについてはあとで説明します ) 。 id は、 anacron が各コマンドを区別するために利用す るもので、 anacrontab 全体を通じてコマンドと 1 対 1 に 対応していなければなりません。 anacron は、コマンド の実行履歴を管理するために /var/spool/anacron ディ レクトリを利用します。このとき、 id の部分で指定した 名前のファイルがこのディレクトリに作られ、各コマンド が実行された日付が書き込まれます。たとえば、図 3 で periodic daily" が実行されると、 /var/spool/anacron /daily というファイルに実行日カ第己入されます。 anacron は、このファイルを利用して、各コマンドを次に実行する 日を決定します。 anacrontab の役割か理解できたら、サンプルファイル の /usr/local/etc/anacrontab. sample を設疋ファイル として使えるようにコピーします。 % cd /usr/local/etc % sudO cp anacrontab. sample anacrontab これで、 anacron で periodic コマンドを実行する設疋 ができました。 次に、それまで cron が管理していた periodic コマンド の実行を停止します。それには、 /etc/crontab から pe- riodic コマンドカ艚かれている行をコメントアウトまたは UNIX MAGAZINE 2004.5 削除します 3 。図 1 では 17 ~ 19 行目がこれに相当します。 以上で、 anacron 経由で periodic コマンドを実行する 準備カ墜ったことになります。 anacron の実行 あとは anacron を起動すれば、 anacrontab ファイルに 書かれているとおりに periodic コマンドが実行されます anacron コマンド自体はバックグラウンドで実行されま す ) 。ためしに root になってコマンドラインから実行する と、実行言冢を残すディレクトリ (/var/spool/anacron) に各 id のファイルカ胙られ、 delay で指定した遅延時間後 に各コマンドが実行されます。 # anacron # ls /var/spool/anacron daily monthly weekly そして各コマンドの実行が終了するたびに、その id に対 応する名前のファイルに実行日が書き込まれます。以下の 例では、 2004 年 3 月 8 日に、 periodic daily" が実行さ れたことが分かります。 # cat /var/spool/anacron/daily 20040308 anacrontab に書かれた最後のコマンドが実行される と、 anacron も終了します。 anacron の引数 通常、 anacron に引数を与えなくても問題はないはずで すが、以下に利用できる引数を挙げておきます。さきほど ちょっと触れたように、 anacrontab に言当されたコマン ドの実行順を重視するときには、 、、一 s " を与えます。 -f 各コマンドを強制的に実行します。 3 いろいろな場面で、しまった ! " と思うことの多い私としては、削除よりコメ ントアウトをお勧めします。 161

5. UNIX MAGAZINE 2004年5月号

0 Red Hat Linux の ツールたち 11 オ鷓麩隹 X-CD-Roast 1 前回は、 Red Hat Linux で CD-R を作成するための ツールとして mkisofs と cdrecord を紹介しました。使 い方は難しくありませんが、どちらもコマンド行べースの ツールなので、 Windows などの GUI のツールに慣れて いる人は戸惑うかもしれません。 基本言綻 ディア " →、、 X-CD-Roast" と選んで実行することもでき のなら、メインメニューから、、プログラム " →、、マルチメ で、引数を付けずに実行します。 GNOME を使っている X-CD-Roast の実行ファイルは /usr/sbin/xcdroast ケージもインストールしておく必要があります。 際に mkisofs や cdrecord を呼び出すため、これらのパッ ジファイルの作成や CD-R ドライプの書込みをおこなう として簡単にインストールできます。このツールはイメー rpm —Uvh xcdroast—O. 98a9ー8. i386. rpm 8. i386. rpm というファイル名で料道彖されているので、 です。インストール CD の 3 枚目に xcdroast-0.98a9ー Linux 7.3 に付属するバイナリ・パッケージは 0.98alpha9 執筆日寺点での最新版は 0.98a1Pha15 ですが、 Red Hat 含まれています。 番ともいえるツールで、多くのディストリビューションに X-CD-Roastl は UNIX 系 OS 、とくに Linux では定 X-CD-Roast ことにしました。 べースの CD-R 作成ツール X-CD-Roast を紹介する そこで、今回は Red Hat Linux で利用できる GUI UNIX MAGAZINE 2004.5 1 http://www.xcdroast.org/ 図 1 初回走加寺の警告 Rc の設定フ , イルが見つかりません ! ます設定をしてださい . X ・ 00 ・日 0 使えるユーザーの設定も忘れすに . レ 図 2 xcdroast のメインメニュー ( 未言錠状態 ) 齷飛 2- ′ 00 074 & 2 1 ツ T は d 第「 Version 0.98a ゆ h (Test-release) 135 2 /usr/bin/consolehelper へのシンポリック・リンクです いるためか、 IDE 接続の CD-ROM ドライプは表示さ ます。 cdrecord が SCSI デバイスの利用を前提として このタブには、利用可能な CD-R ドライプが表示され 接続機器 ( 図 3 ) ひととおりみていきましよう。 画面カ観れます。この画面にはタブがいくつかあります。 こで [ SETUP ] ボタンをクリックすると、図 3 の設疋 なっています ( 図 2 ) 。 [SETUP] および [ 終了 ] ボタンのみカ吏用可能な状態に Roast のメインメニューが表示されます。このた態では、 が表示されます。 [OK] ボタンをクリックすると、 X-CD- 初めて起動したときには、図 1 のような警告ウインドウ 起動され、 root パスワードの入力を求められます ) 。 ます ( この場合、デフォルトでは /usr/bin/xcdroast2 が

6. UNIX MAGAZINE 2004年5月号

図 1 usbd スクリプト # ! /bin/sh # $FreeBSD: src/etc/rc. d/usbd,v 1 . 1 2002 / 06 / 13 22 : 14 : 36 gordon Exp $ /etc/rc # KEYWORD : # BEFORE : LOGIN # REQUIRE : # PROVIDE : . subr FreeBSD DAEMON usbd rcvar= set_rcvar command=" /usr/sbin/${name}' load—rc—config $name run_rc_command " $ 1 " かどうかを決める変数の名前を格納します。 FreeBSD の 場合、 name 変数の値の後ろに -enable を付けたものにな るので、ここでは usbd_enable という名前になります。し かし、より汎用的なスクリプトにするには、この値を直接 言杢するのは得策とはいえません。そのために用意されて いるのが、 3 月号で紹介した set-rcvar 関数です。 usbd ス クリプトでも、 set-rcvar 関数を使って rcvar 変数カ第又疋 されています。 rcvar= ' set_rcvar name 変数を設疋したあとに set-rcvar 関数を実行し、 その出力を rcvar 変数に設定しています。これにより、 name 変数カしく設疋されていれば、どの OS を使って いても正しい形式の変数名が設定されることになります 1 。 最後に設疋している変数は command です。この変数 には、サービスを提供するために実行するプログラムの パス名を指定します。このスクリプトは標準的なものなの で、 /usr/sbin ディレクトリにスクリプト名と同名のプロ グラムが置かれています。これを指定するために、次のよ うなコマンドを実行しています。 command=" /usr/sbin/${name}" これもサービス名をそのまま謎杢するのではなく、 name 変数ロ内された値を使って変数を譿定しています。 変数の設定の次は、実際の処理をおこなう部分です。も 1 usbd スクリプトは FreeBSD でのみ動作するスクリプトですが、もちろ ん FreeBSD と NetBSD の両方・リ用されるスクリプトもあります。 92 ちろん、ここでも /etc/rc. subr ファイルで定義された関数 を利用しています。 load—rc—config $name load-rc-config は、 name 変数に指定されたサービス用 の設疋ファイルを読み込むための関数です。この関数を実 行することで、 usbd サービスに関する各種設定を変数に取 り込みます。 これで、プログラムを実行する準備は整いました。最後 に run-rc-command を使って、指定したアクションを実 行します。 run_rc_command " $ 1 " run-rc-command 関数の引数として、スクリプト自身 への引数をそのまま渡しています。 rc スクリプトは、 start や stop などのあらかじめ決められたキーワードを引数と して起動されるため、この引数を関数に渡し、目的の動作 を実行します。 汎用性 UN 工 X MAGAZINE 2004.5 しかし、実際にはそれほど簡単ではありません。プロ ビスを提供するためのスクリプトに変更できそうです。 しかありません。この行を書き換えるだけで、ほかのサー usbd に依存する部分は name 変数に値を設疋する 1 行 節の usbd サービスを提供するためのスクリプトでは、 こで、スクリプトの汎用性に注目してみましよう。前

7. UNIX MAGAZINE 2004年5月号

連載 /Red Hat Linux のツールたち 図 15 外部プログラムのファイル属性を変更 [root@valhalla root] # cd /usr/bin [root@valhalla bin] # —rwxr—xr—X —rwxr—xr—X 1 て 00t 1 root 1 root 1 て 00t ls ー 1 cdda2wav root root root cdrecord mkisofs readcd 205407 3 月 1 2002 cdda2wav 211146 3 月 1 2002 cdrecord 404480 3 月 1 2002 mkisofs 118503 3 月 1 2002 readcd [root@valhalla bin] # [root@valhalla bin] # Croot@vaIha11a bin] # 1s ー 1 cdda2wav cdrecord mkisofs readcd chmod 4710 cdda2wav cdrecord mkisofs readcd chown root : cdwrite cdda2wav cdrecord mkisofs readcd —rWS——X— —rWS——X— —rWS——X— —rWS——X— 1 root 1 root 1 root 1 て 00t cdwrite cdwrite cdwrite cdwrite 205407 211146 404480 118503 3 月 3 月 3 月 3 月 1 1 1 1 [ て oot@valhalla bin] # 図 16 xcdrwrap のファイル属性を変更 [root@valhalla bin] # [root@valhalla bin] # 1 て 00t [ て 00t@val alla bin] # [root@valhalla bin] # [root@valhalla bin] # 1 root —rwxr—sr—X [root@valhalla bin] # cd /usr/1ib/xcdroast-O .98/bin ls ー 1 xcdrwrap 16223 4 月 15 root chown root : cdwrite xcdrwrap chmod 2755 xcdrwrap IS ー 1 xcdrwrap 16223 4 月 15 cdwrite パッケージをインストールしただけでは、一般ユーザーが 実行することができません。自分専用の PC なら、スー パーユーザーになって実行すればいいと割り切ることもで きますが、複数のユーザーが使う場合はそういうわけにも いきません。 一般ユーザーの権限で実行できるようにするための設定 は、パッケージに付属のドキュメント 4 に書かれているの こではその手川頁を簡単に示します。 で、 1. cdwrite グループの作成 X-CD-Roast では、 mkisofs や cdrecord などの外部プ ログラムを、 /usr/lib/xcdroast-(). 98/bin/xcdrwrap というラッパー・プログラムを介して実行します。具体 的には、 X-CD-Roast の実行専用のグループを作成し、 xcdrwrap がそのグループの権限で実行され、かっ、そ のグループでなけれは外部プログラムが実行できないよ うに言定することで、一殳ユーザーによる X-CD-Roast の実行を可能にしています。 そこでます、 /etc/group に次のような行を追加して専 用のグループを作成します。 cdwrite:x:101: 4 /usr/share/doc/xcdroast-(). 98a9/README. nonroot 138 2002 cdda2wav 2002 cdrecord 2002 mkisofs 2002 readcd 2002 xcdrwrap 2002 xcdrwrap ればなんでもかまいません。 、、 101 " となっていますが、既存のグループと重複しなけ この例では、グループ名は、、 cdwrite' 、グループ ID は で注意してください。 ザーは、これらのプログラムを直接実行できなくなるの この変更により、 cdwrite グループに属していないユー のみが実行できるように変更します 5 ( 図 15 ) 。 イル属性を、上で作成した cdwrite グループのプロセス 次に、 X-CD-Roast カ坏リ用する外部プログラムのファ 性を変更 2. X-CD-Roast カ鮃び出す外部プログラムのファイル属 UNIX MAGAZINE 2004.5 ドライプの読出しや書 j & メ、をおこなうプログラムです。 するプログラム、 readcd は cdrecord のパッケージに含まれる、 CD-R 5 cdda2wav はオーディオ CD のデータを WAVE 廾分にのデータに変甘奐 実行すると、起動時に図 17 の警告ウインドウが表示さ楸 たとえば、ユーザー hayao が初めて X-CD-Roast を を実行できるようになります。 以上の設定により、一ヨ殳ユーザーの権限で X-CD-Roast グループの権限で実行されるようにします ( 図 16 ) 。 取侵に、 xcdrwrap のファイル属性を変更して、 cdwrite 3. xcdrwrap のファイル属性を変更

8. UNIX MAGAZINE 2004年5月号

連載 /UNIX Communication Notes 表 2 Yuki 、 Viki2.1.2 のカスタマイス用変数 my $ modifier-mail rny $modifier-url my $modifier-name my $modifier-dbtype my $modifier-rss-description my $modifier-sendmail my $modifier-dir-plugin my $modifier-dir-data rny $ mo difier-url-data my $modifier-rss-title my $modifier-rss 」 ink 図 1 初めてアクセスした場合の画面 4 ト 0 十をト 00 影 朝 ( 0 い加 nfW ⅸし ( gPF p ー このページは Y 破物の ! ! 00 を、てす . 管理者のメールアドレス ( 例 : suguru@unixmag ・ jp) 理者の Web ページ ( 例 : http://www.unixmag ・ jp/) 管理者名 ( 通常のテキストで記杢する ) YukiWiki カ吏うデータベースの才彳定。 YukiWikiDB 、 dbmopen 、 AnyDBM-File の 3 種類カ甘彳定できる。作者カ雛奨しているように、特別な理由がなけれは最初の Yuki- WikiDB を指定するとよい。これを指定すると、取り扱うテキストはそのままファイルと して保存される。後日、ファイルをバックアップすることを考えると、この設定がもっと もシンカレでトラブルカ眇ないだろう。その他のオプションを指定する場合には、 wiki. cgi をよく読み、利用法を十分に理解してから使うようにする YukiWiki カ甘是供するべージに書込みが発生した場合、管理者に通知メールを送るよう に設定できる。このとき、起動するメール配送プログラムを指定する。 sendmail であれ ば、 /usr/sbin/sendmail —t -n のように指定する。 wiki. cgi を見れは分かるが、関 数 send-mail-to-admin に実際の送イ言処理が書かれている。これを見ると、メールの 相手先は sendmail プログラムの標準入力に渡される文字列で指定される ( リスト 1 ) 。 sendmail 以外のメール医プログラムを利用する場合は、この関数を告すればよい。 なお、メールを送らない / 送れない場合は、 ' ' ( シングルクオート 2 つ ) を記杢する プラグインを置くディレクトリの指定 CGI カ第売み書きするデータを置くディレクトリ。 /usr/share/httpd/wiki/data のよ うに、絶対パスで指定する。このパスは、 CGI か道接データを操作するために使われる。 したがって、システム内の任意のディレクトリを設疋してもよい CSS ファイルや画像ファイルを置くディレクトリに対応した URLO これは、 WWW サーバー経由でアクセスした場合の URL を指定する。この URL は、 CSS を利用する ために使われる。標準の wiki. css を使う場合は、 2 つの孑定方法がある。 1 つは、 wiki. cgi が置かれるディレクトリに wiki. css を置き、この変数に、、 . " ( ピリオド ) を指定する方法 である。これがもっとも簡単お手軽である。もう 1 つは、 CSS を置く (WWW サーバー がアクセスを提供している ) ディレクトリを指定し、そこに wiki. css を置く方法である。 これは、インストール先のサーバーの方針に従って決めればよい RSS (Rich Site Summary) のタイトルに使用する文哢冽 これも同様に RSS で使われる、この YukiWiki サーバーの URLO RSS にこの URL が埋め込まれる RSS の description ( 説明文 ) に使われる文哢みリ。通常は、その Wiki サーバーについ ての説明文を書いておく 第」ニは 5 」色 0 日上第一血」史当ニ もし第なたが管第をなら、このれま物版曜を公問する続に . ! 当 00 達 09 建・變物軈 0 のリンク由て管・・のバスワードを設をして ( ださい . 第・・のバスワードが設定できたなら、行 0 p 製を・第して、あなた独ⅱの 00 を、を作ってください . ・・をにはれ d ー 0 ・ ! がお第めです . ・」 04 要まは全ヘージの一第です . ・“れに h ・” : が・第されたヘージの一第になります . ・一は解強の・新物をは . ム第第第、製新 30 田強も地に一ります . UN 工 X MAGAZINE 2004.5 をインストールした WWW サーバーへのアクセスを許してはい バーに対して適切なアクセス制脚の定を完了するまでは、 WiKi 当り前だが、管理者用パスワードを定し、 WWW サー 者用パスワードの誌定をおこなう必要がある。 よって守られているので、何よりもまず、そのための管理 けない。設疋途中のサービスを外部からアクセスされることほど 危険なものはない。 管理者用のパスワードを設定するには、図 1 の Front- page のなかに表小されている AdminChangePassword のリンクをクリックし、設疋用のページ ( 図 2 ) にアクセス する。くどいようだが、管理者用パスワードはかならず最 初に設疋しておこう。 ページを作成する 59 イトルを入力する。タイトルの文字列には日本語も使える すると、ます図 3 のような画面カ俵示される。こでタ 成 " というリンクをクリックする。 してみる。それには、画面右上に表示されている、、新規作 これで準備ができたので、さっそく新しいページを作成

9. UNIX MAGAZINE 2004年5月号

特集インターネットと世界のすきま 図 4 予約データ w 土 de 番号 , 氏名 , 9 日夕 , 10 日朝 , 10 日昼 , 10 日夕 , 11 日朝 , 11 日昼 , 11 日夕 , 12 日朝 26 , 羽田久—,Y,Y,Y,Y,Y,Y,Y,Y 168 , 宇夫陽次朗 ,N,N,Y,Y,N,Y,Y,N 494 , 川喜田佑介 ,Y,Y,N,N,N,Y,Y,Y 図 5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 7 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 44 バーコード版のサンプルコード # ! /usr/bin/perl # # どの予約テータを不するか do { print " ご飯チェック・チェックする対象お盟尺してください \ 取 " print ” 1 ) 9 日夕 \ n " print " 2 ) 10 日朝 \ t 3 ) 10 日昼 \ t 4 ) 10 日夕 \ Ⅱ " print " 5 ) 11 日朝 \ t 6 ) 11 日昼 \ t 7 ) 11 日夕 \ Ⅱ " print " 8 ) 12 日夕 \ n " $inp = く > chomp $ inp }while($inp > 8 Ⅱ $inp く 1 ) $logbase meal ) $dbfile meal_check . CSV' # # 予約データ (csv) のムみ open DB,$dbfi1e while( く DB>) { chomp ; split(/,/) my ( $ Ⅷ , $name , @m) $meal [$wnum] = $m [ ($inp ー 1 ) ] $name [$wnum] = $name print "$wnum : $ 取 e $meal [$wnum] \n" # # 10g の準備 $t = time '$logbase-$t . txt" $logfile open LOG, ">$logfile" print LOG localtime (time) close LOG # # 実イの開始 print " バーコードをスキャンしてください。 \n" open BCD , "/dev/kbdl " select BCD ; $/="\r" while ( く BCD>) { chomp ; chomp ; last if ( / 010101 / ) select STDOUT ; $ ト 1 # # 010101 のバーコードは終了を御未する if ( length($-) $ 皿 = $name [$wn] print " \ [$wn\] $ 皿 " print "\t 〇 \ Ⅱ " open LOG, ">>$logfile" print LOG " $wn , $nm\n" close LOG }else{ print "\t X ( あなたはご飯を食べてはいけません ) \ n " close BCD UNIX MAGAZINE 2004.5

10. UNIX MAGAZINE 2004年5月号

特集インターネットと世界のすきま 図 4 予約データ Wide 番号 , 氏名 , 9 日夕 , 10 日朝 , 10 日昼 , 10 日夕 , 11 日朝 , 11 日昼 , 11 日夕 , 12 日朝 26 , 羽田久—,Y,Y,Y,Y,Y,Y,Y,Y 168 , 宇夫陽次朗 ,N,N,Y,Y,N,Y,Y,N 494 , 川喜田佑介 ,Y,Y,N,N,N,Y,Y,Y 図 5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 44 バーコード版のサンプルコード # ! /usr/bin/perl # # どの予約データを禾するか do { print " ご飯チェック・チェックする対象お盟尺してください \ が print ” 1 ) 9 日夕 \ n " print " 2 ) 10 日朝 \ t 3 ) 10 日昼 \ t 4 ) 10 日夕 \ n ” print " 5 ) 11 日朝 \ t 6 ) 11 日昼 \ t 7 ) 11 日夕 \ n " print " バーコードをスキャンしてください。 \n" # # 実イの愕劬台 close LOG print LOG localtime(time) open LOG, ">$logfile" "$logbase—$t . txt" $logfile time $t # # 10g の準備 print " $ Ⅷ : $name $meal [$wnum] \n" $name [$wnum] = $name $meal [ $ ] = $mC($inp ー 1 ) ] my ($wnum , $name , @m) chomp while( く DB>) { open DB,$dbfi1e # # 予約テータ (CSV) の言蒄入み 'meal_check. CSV' $dbfile meal ) $logbase }while($inp > 8 Ⅱ $inp く 1 ) chomp $inp $inp = く > print " 8 ) 12 日夕 \ Ⅱ open BCD , t'/dev/kbdl " select BCD ; $/="\r while ( く BCD>) { chomp ; chomp last if ( / 010101 / ) ; $ ト 1 ・ # # 010101 のバーコードは終了を未する select STDOUT if ( length($-) $ Ⅷ = $name [$wn] print " \ [$wn\] $ 皿 " print "\t 〇 \ Ⅱ open LOG, ">>$logfile" print LOG " $wn , $nm\n" close LOG }else{ close BCD print "\t X ( あなたはご飯を食べてはいけません ) \ Ⅱ " UN 工 X MAGAZ 工 NE 2004.5