●Sophos Anti-Virus定義ファイルの自動アップデート

 Sophos Anti-Virusのウイルス定義ファイルの手動アップデートについては,第1回でも解説した通りだ。ただ,ウイルスの定義ファイルはできれば自動でアップデートを行うようにしておきたい。

 Sophos Anti-Virusのウイルス定義ファイルは,ソフォスのWebサイトからダウンロードして利用するが,定義ファイルのリストファイル(list.txt)も単独で手に入れることができる。また最新の定義ファイル(ZIPファイル)は「http://www.sophos.com/downloads/ide/xxx_ides.zip」(xxxはバージョンナンバー)というURL以外に,まとまったZIPファイルを直接指定してダウンロードすることもできる。

 単純にZIPファイルを常に最新のものにしておくのであれば,ZIPファイルのURLを,wgetを利用してミラーリングし(wget -mオプションを利用),それを定義ファイルのあるディレクトリで解凍するようなスクリプトを記述しておけばよいが,ここではZIPファイルではなく,リストファイルを利用し,そこに記述されている定義ファイルが最新のものであれば,個々にダウンロードするようなスクリプトを一例として紹介する。

リスト1■自動ダウンロードスクリプトの一例

#!/bin/sh
#/usr/local/sbin/sophos_update.sh

wget="/usr/bin/wget"
log="/usr/bin/logger -i"
ide="/usr/local/sav"
url="http://www.sophos.com/downloads/ide/"
wget_log="/var/log/sophos_update.log"

echo -e "########### Sophos update starting ###########\n"
echo "ide_dir = $ide"
echo -e "Sophos_URL = $url\n"
$log "Sophos update started"

#Sophos update start
cd $ide
$wget -q $url/list.txt
if [ $? -eq 0 ]; then
        $log "Sophos list.txt download successfull"
        echo "Sophos list.txt download successfull"
        $wget -i list.txt -N -o $wget_log
    if [ $? -eq 0 ]; then
        $log "Sophos update successfull"
        echo -e "Sophos update successfull\n"
        rm -rf list.txt
    else
        $log "Sophos update failed"
        echo -e "Sophos update failed\n"
fi
else
$log "Sophos list.txt download failed"
echo -e "Sophos list.txt download failed\n"
fi
echo "########### Sophos update end ###########"

上記のスクリプトの動作は下記のようになる。

ローカルのウイルス定義ファイルのある/usr/local/savに移動
↓
SophosのWebサイトより,リストファイルをダウンロード
↓
list.txtに記述された定義ファイルをwgetが読み込み,ダウンロードを開始する。ただし,すでにダウンロードされている定義ファイルは取得しない

 という流れになっている。list.txtのダウンロード,そして定義ファイルのダウンロードに失敗すると「Sophos list.txt download failed」,「Sophos update failed」というエラーを返し,アップデートの結果は「/var/log/messages」に記録するようになっている。また,アップデートの詳細についてのログ(wgetのログ)は,「wget_log="/var/log/sophos_update.log"」で指定したログファイルに記録される。

・実行時の画面

########### Sophos update starting ###########

ide_dir = /usr/local/sav
Sophos_URL = http://www.sophos.com/downloads/ide/

Sophos list.txt download successfull
Sophos update successfull

########### Sophos update end ###########

・sophos_update.logのログ画面。すでにダウンロードしたファイルは取得しない

--01:58:29-- http://www.sophos.com/downloads/ide/yaha-b.ide
      => `yaha-b.ide'
www.sophos.com:80 に接続しています... 接続しました!
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 469 [application/sophos-ide]
サーバ側のファイルよりローカルのファイル `yaha-b.ide' の方が新しいので取得しませ
ん。

●スクリプトの利用

 上記のスクリプトを利用するのであれば,viで適当な名前の新規ファイルを作成し,スクリプトの内容をコピー&ペーストしたあとに,スクリプトのパーミッションを変更する。あとは,スクリプトを適当な場所に移動させ,cronで自動起動させるように設定しておけばよいだろう。

# mv sophos_update.sh /usr/local/sbin
# chmod u+x sophos_update.sh←パーミッションの変更
# vi /etc/crontab←crontabへの登録

03 4 * * * root /usr/local/sbin/sophos_update.sh

 上記のようにcrontabに記述すると,毎朝4時3分に自動的にアップデートを行うようになる。なお,今回紹介したスクリプトはあくまでも単純な一例であるため,細かな部分などは各ユーザーで使用しやすいように改変するなり,新規に作成するなどしてほしい。

[TTS,ITmedia]

PREV 4/4