第5章 swatch, cron の設定
 簡単に言えば、swatch は、ログ監視ツール、cron は、定刻起動プログラム設定ツールです。

 ドライバの rasv1.o だけでも、RAS(Reliability Availability Serviceability)としての機能(システム異常時と、RASポートに関するハッキング検出時の音声警告)は、果たします。

 でも、それだけじゃつまりません(よほどの場合でないと音声が出ない)ので、ログを監視して、FTP、SSHによるアクセスを検出した場合にその報告を行うように swatch で設定し、毎日定刻に、音声でお知らせ(学校のチャイムみたいなもん)を行うように、cron で設定してみましょう。

 なお、ここでは、swatch, cron についての極簡単な使用例を示すだけですので、詳細な使用方法については、マニュアル、それなりの参考書、それなりの情報のWebページ等々を参照してください。

 ディストリビューションによって異なるかもしれませんが、多くの場合、swatch と cron はパッケージされてると思います。以下は、すでに swatch と cron はインストールされているという前提で記述します。

1.swatch の設定
 root で、ログインして、/root/.swatchrc (/root は、root のホームディレクトリ)を作成します。
 その中身は、

#
#
/sshd/                  exec="/FullPath/voice1 p 1 > /dev/null"
/in.ftpd/               exec="/FullPath/voice1 p 2 > /dev/null"

 のようにします。(/FullPath/ は、voice1 の置いてあるディレクトリ)
 そして、

/usr/bin/swatch -c /root/.swatchrc -t /var/log/secure > /dev/null &

 のようにすると、swatch が起動します(swatch が、/usr/bin にある場合)。
 -t は、tail の意味で、/var/log/secure の最終行に、/root/.swatchrc で指定した文字列を見つけると、その右側に記載された処理を行います。

この場合、

・SSHによるコネクトを検出すると、ch1 の音声を再生
・FTPによるコネクトを検出すると、ch2 の音声を再生

することになるわけです。

 ただ、このままだと、サーバーを再起動した際に、swatch の実行もしなければなりませんので、少々面倒です。
 サーバーの再起動時に、crontab が自動設定されるようにするには、例えば、
/etc/rc.d/rc.local の最後に以下のように書いておけば、OKです。

echo "swatch : start"
# swatch start
/usr/bin/swatch -c /root/.swatchrc -t /var/log/secure > /dev/null &

 実はこれではまだ問題があり、指定のログファイルがローテートされてしまうと swatch は、古い方のファイルの監視を続けてしまうのです。

 そこで、ログファイルのローテート直後のタイミングで、再度 swatch を起動しないといけません。

 ログファイルのローテートは、ディストリビューションによって異なる設定になっていると思います。
 ここでは、RedHat 系の場合で説明します。

/etc/cron.daily/logrotate

 というshell スクリプトがありますので、これに次の3行を追加します。

killall swatch
killall tail
/usr/bin/swatch -c /root/.swatchrc -t /var/log/secure > /dev/null &

 ただこれだと、swatch は、ともかくとしても、tail を全部殺してしまうので、他のプログラムでtail を使用している場合は、障害を引き起こすことが考えられますので、あらかじめ、tail を使用する(特にサーバー)プログラムが他に動かないことを確認できるといいでしょう。

2.cron の設定
 cron(crond, crontab)を使うと、指定の時間に、指定のプログラムを起動することができます。

 以下の記述は、crond は、起動しているという前提で、毎日10:30に始業の18:00に終業の音声を流すものです。

 なお、これ以降の作業は、root(スーパーユーザー)で行ってください。

・適当なディレクトリに、cron1 というテキストファイルを作ります。
 その内容は、

30 10 * * * /FullPath/voice1 p 4 > /dev/null
00 18 * * * /FullPath/voice1 p 5 > /dev/null

・これを、crontab で、設定します。
 crontab が、/usr/bin/ にあるとして、

/usr/bin/crontab /cron1's_directory/cron1

 /cron1's_directory/ は、cron1 の置いてあるディレクトリ

 これで毎日、10:30にch4の音声が、18:00にch5の音声が再生されます。

 が、このままだと、サーバーを再起動した際に、crontab の実行もしなければなりませんので、少々面倒です。
 サーバーの再起動時に、crontab が自動設定されるようにするには、例えば、
/etc/rc.d/rc.local の最後に以下のように書いておけば、OKです。

echo "crontab cron1: voice chime auto set start"
# crontab Set
/usr/bin/crontab /cron1's_directory/cron1

 ただ、これだけだとcrond が動いているかとか、voice1 や cron1 の存在に関係なく動いちゃいますので、気になる人は確認してから起動するようにするなど、適当に書き換えてください。

第4章 RASV用ソフトウェアへ Abstract(要約)へ