#!/bin/bash ############################################################################## # Script-Name : virusscan.sh # # Description : Automatisierter CLamAV-Scan für Verzeichnisse. # # Sollte ein Virus gefunden werden, wird der System- # # administrator per eMail informiert. # # # # Last update : 17.06.2011 # # Version : 0.02 # ############################################################################## ############################################################################## # H I S T O R Y # ############################################################################## # -------------------------------------------------------------------------- # # Version : 0.02 # # Description : Umstellung auf einzeln zu definierende Scanbereiche # # -------------------------------------------------------------------------- # # Version : 0.01 # # Description : initiale Version mit Definition eines einzelnen # # Verzeichnisses, welches gescannt werden soll. # ############################################################################## # Source function library. . /etc/init.d/functions # Source variable declarations. ARRAY=( "/home/admin/" "/home/django/" "/root/" "/var/www/html/") SCAN_DIRECTORY="/home/" SCAN_TEMP_FILE="/tmp/virusscan.tmp" HOST=$(hostname) MAIL="/bin/mailx" MAIL_TO="root@nausch.org" ############################################################################## # Check if dms directory is mounted via DRBD # ############################################################################## #if [ ! -d "$SCAN_DIRECTORY" ]; then # echo -n $"Server ist nicht der aktive DRBD-Knoten! " # success; echo # exit 2 #fi ############################################################################## # Check if temp file exist, and delete them. # ############################################################################## if [ -e "$SCAN_TEMP_FILE" ]; then echo -n $"Lösche temporäre Datei $SCAN_TEMP_FILE ... " `rm $SCAN_TEMP_FILE -f` touch $SCAN_TEMP_FILE # Check if delete of temp file was successful. if [ "$?" != "0" ]; then failure; echo exit 3 else success; echo fi fi ############################################################################## # Scan a directory recursly. # ############################################################################## ELEMENTS=${#ARRAY[@]} echo $"Anzahl der definierten Verzeichnisse: $ELEMENTS" for (( i=0;i<$ELEMENTS;i++)); do echo -n $"Scanne das Verzeichnis: ${ARRAY[${i}]} ..." /usr/bin/clamscan -r ${ARRAY[${i}]} >> $SCAN_TEMP_FILE if [ "$?" -gt 1 ]; then failure; echo echo "Return-Code clamscan: [$?], (man clamscan) !" exit 4 else success; echo fi done #echo -n $"Scanne das Verzeichnis: $SCAN_DIRECTORY... " # #/usr/bin/clamscan -r $SCAN_DIRECTORY > $SCAN_TEMP_FILE #if [ "$?" -gt 1 ]; then # failure; echo # echo "Return-Code clamscan: [$?], (man clamscan) !" # exit 4 #else # success; echo #fi ############################################################################## # Check if a virus was found, and send a e-Mail if true. # ############################################################################## echo -n $"Ergebnis des Virenscanns " if [ -n "`grep FOUND $SCAN_TEMP_FILE`" ]; then warning; echo grep FOUND ${SCAN_TEMP_FILE} | ${MAIL} -s "!!! VIRUS GEFUNDEN @ ${HOST}!!!" ${MAIL_TO} # cat ${SCAN_TEMP_FILE} | ${MAIL} -s "!!! VIRUS GEFUNDEN @ ${HOST} !!!" ${MAIL_TO} else success; echo fi # End of script; exit 0