48 lines
1.5 KiB
Bash
48 lines
1.5 KiB
Bash
#!/bin/bash
|
|
|
|
#written by Daniel Wenzlik 2021 - https://danielwenzlik.com
|
|
#Script under the GNU AGPLv3 license.
|
|
|
|
LOGFILE="/var/log/clamav/autoscan/clamav-$(date +'%Y-%m-%d').log";
|
|
HOST="$(hostname --long)";
|
|
EMAIL_MSG="Daily ClamAV scan results";
|
|
EMAIL_FROM="clamav-daily@your-domain.com";
|
|
EMAIL_TO="tec@your-domain.com";
|
|
DIRTOSCAN="/var/www /var/qmail";
|
|
|
|
#Disable freshclam.service
|
|
echo "Disable clamav-freshclam.service"
|
|
systemctl stop clamav-freshclam.service;
|
|
|
|
# Update ClamAV database
|
|
echo "Looking for ClamAV database updates...";
|
|
freshclam --quiet;
|
|
|
|
TODAY=$(date +%u);
|
|
|
|
if [ "$TODAY" == "7" ];then
|
|
echo "Starting a full weekend scan.";
|
|
# be nice to others while scanning the entire root
|
|
nice -n5 clamscan -ri / --exclude-dir=/sys/ --exclude-dir=/proc/ &>"${LOGFILE}";
|
|
else
|
|
# total size if we use something like /home/*/public_html for scanning
|
|
DIRSIZE=$(du -shc $DIRTOSCAN 2>/dev/null| cut -f1 | tail -1)
|
|
echo -e "Starting a daily scan of ${DIRTOSCAN} directory.\nAmount of data to be scanned is ${DIRSIZE}.";
|
|
nice -n19 clamscan -ri $DIRTOSCAN &>"${LOGFILE}"
|
|
fi
|
|
|
|
# get the value of "Infected lines"
|
|
MALWARE=$(tail "${LOGFILE}"|grep Infected|cut -d" " -f3);
|
|
|
|
# if the value is not equal to zero, send an email with the log file attached
|
|
if [ "${MALWARE}" -ne "0" ]; then
|
|
echo "${EMAIL_MSG}"|mail -a "${LOGFILE}" -s "ClamAV: Malware Found" -r "${EMAIL_FROM}" "${EMAIL_TO}";
|
|
fi
|
|
|
|
#Re-enable clamav-freshclam.service
|
|
echo "Enable clamav-freshclam.service back again"
|
|
systemctl start clamav-freshclam.service;
|
|
|
|
echo "The script has finished.";
|
|
exit 0;
|