clamscan用logwatch設定

ClamAVのclamscanを定期的に動かすために、下記のようなスクリプトを/etc/cron.weekly/に置いています。

#!/bin/bash

LANG=C
QUARANTINE_DIR="/var/lib/clamav/virus"
LOG_FILE="/var/log/clamav/clamscan.log"
if [ ! -e "$LOG_FILE" ]; then
    touch "$LOG_FILE"
    chmod 644 "$LOG_FILE"
    chown clam.clam "$LOG_FILE"
fi

/bin/echo -e "\n---- `date`" >> $LOG_FILE
/usr/bin/clamscan -i --move=$QUARANTINE_DIR -r --exclude-dir=^/dev --exclude-dir=^/proc --exclude-dir=^/sys --exclude-dir=^$QUARANTINE_DIR / 2>&1 | /usr/bin/tee --append $LOG_FILE | /bin/grep -E 'FOUND$|^WARNING:|^ERROR:'

これで/var/log/clamav/clamscan.logに実行時の出力が記録されますし、ウィルスファイル発見時などにはcronの仕組みでrootにメールが送られます。(clamscan.logはlogrotateでローテートしています。)

数年動かしていて、今までメールがあったのはテスト時のEicarだけです。

もちろんこれ以外に見つかったら困るのですが普段本当に動いているかどうかも気になるので、他のアプリのlogwatch設定ファイルを参考にclamscan用のlogwatch設定ファイルを作りました。

/etc/logwatch/scripts/services/clamscan:

use Logwatch ':dates';

my $SearchDate;
my $Date;
my $InRange = 0;

$SearchDate = TimeFilter("%b %e ..:..:.. (\\\w{3} )?%Y");

while (defined(my $ThisLine = <STDIN>)) {
   if (($Date) = ($ThisLine =~ /^---- \w{3} (\w{3} [ \d]\d ..:..:.. (\w{3} )?\d{4})$/)) {
      if ($Date =~ $SearchDate) {
         $InRange = 1;
      } else {
         $InRange = 0;
      }
   }
   if ($InRange) {
      print $ThisLine;
   }
}

/etc/logwatch/conf/logfiles/clamscan.conf:

LogFile = clamav/clamscan.log
Archive = clamav/clamscan.log-*

/etc/logwatch/conf/services/clamscan.conf:

Title = "clamscan"
LogFile = clamscan

 

clamscan実行翌日のLogwatchからのメールに、下記のような情報が含まれるようになりました。

 --------------------- clamscan Begin ------------------------ 

 ---- Thu Apr 17 03:43:01 JST 2014

 ----------- SCAN SUMMARY -----------
 Known viruses: 3311765
 Engine version: 0.98.1
 Scanned directories: 7397
 Scanned files: 72478
 Infected files: 0
 Total errors: 1
 Data scanned: 2840.05 MB
 Data read: 2434.70 MB (ratio 1.17:1)
 Time: 879.836 sec (14 m 39 s)

 ---------------------- clamscan End -------------------------

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA