59 lines
1.4 KiB
Bash
Executable file
59 lines
1.4 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
#
|
|
# Scans NAS for viruses and alerts users
|
|
# Uses avira and clamav ATM
|
|
USERS="foo@example.org"
|
|
SCANDIR="/mnt/nas_movies /mnt/nas_music /mnt/nas_p2p /mnt/nas_software /mnt/nas_upload"
|
|
LOGFILE="/root/virus_scan_$(date +%d_%m_%Y).log"
|
|
SCANNER=( "avscan -s --batch --log-file=$LOGFILE $SCANDIR"
|
|
"clamscan -r -i -l $LOGFILE $SCANDIR"
|
|
)
|
|
LOGGER=$(which logger)
|
|
|
|
|
|
for i in $(seq 1 $(echo ${#SCANNER[*]})); do
|
|
LOG_NAME="$(basename $0)_$i_$(date +%d_%m_%Y)_XXXXXX"
|
|
mktemp -t $LOG_NAME
|
|
done
|
|
|
|
# Logging
|
|
function logit() {
|
|
case $2 in
|
|
error)
|
|
$LOGGER -si $(basename $0): $1
|
|
;;
|
|
*)
|
|
$LOGGER -i $(basename $0): $1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# Mount all noauto things from /etc/fstab
|
|
for i in $(grep 'nfs.*noauto' /etc/fstab | awk '{print $2}'); do
|
|
if ! mount $i 2>/dev/null; then logit "Failed mounting $i" "error"; fi
|
|
done
|
|
|
|
# Run all scanners
|
|
|
|
COUNTER=0
|
|
for foo in "${SCANNER[@]}"; do
|
|
TEMPFILE=$(find /tmp -type f -name $LOG_NAME)
|
|
|
|
echo "**********************" > $TEMPFILE
|
|
echo "* $COUNTER. scanner running with: $foo" >> $TEMPFILE
|
|
echo "**********************" >> $TEMPFILE
|
|
$foo
|
|
sleep 2
|
|
done
|
|
|
|
# Merge all temporary logfiles
|
|
cat /root/avscan.log /root/clamscan.log > $LOGFILE
|
|
|
|
# Send e-mail
|
|
mail -s "NAS antivirus check" $USERS < $LOGFILE
|
|
|
|
# Unmount all noauto things from /etc/fstab
|
|
sleep 3
|
|
for i in $(grep 'nfs.*noauto' /etc/fstab | awk '{print $2}'); do
|
|
if ! umount $i 2>/dev/null; then logit "Failed unmounting $i" "error"; fi
|
|
done
|