#!/bin/sh start_clamd() { clamd --config-file=/etc/clamav/clamd.conf echo "Waiting for clamd..." attempts=0 while [ ! -S /tmp/clamd.sock ] && [ "$attempts" -lt 120 ]; do sleep 0.5 attempts=$((attempts + 1)) done if [ ! -S /tmp/clamd.sock ]; then echo "ERROR: clamd failed to start" cat /tmp/clamd.log 2>/dev/null exit 2 fi echo "clamd ready ($(cat /tmp/clamd.log 2>/dev/null | grep -c 'loaded') databases loaded)" } case "${1}" in version ) echo "stage: ${1}" clamscan --version clamconf | sed -ne '/Database information/,/^$/p' for file in /var/lib/clamav/* ; do (clamscan -d $file /proc/cmdline > /dev/null 2>&1) && echo "+ ${file}" || echo "Bad Signaturefile ${file}" done echo "$(sigtool --list-sigs | wc -l) Signatures loaded" ;; scan ) echo "stage: ${1}" start_clamd echo "Starting multiscan of /data:" clamdscan --multiscan /data rc=$? exit $rc ;; * ) echo "stage: ${1}" echo "Usage: scan | version | shell" echo " scan - multithreaded scan of /data via clamd" echo " version - show engine + signature info" /bin/sh ;; esac