I have searched around but not found a possible solution to this so far. I have an ongoing scan which I thought would've been finished at certain time, but unfortunately it has not. So I am wondering if there's a way to check the scan progress of this ongoing progress.
4 Answers
AFAICT, this is not possible—you can either have all scanned files printed to the console, or just print infected files. Then at the end, ClamAV will print a summary. I haven't been able to find a way to get any ongoing statistics.
The only way I could imagine hacking it to do this would be:
- First, count all files recursively in the directory(ies) that will be scanned by ClamAV, then store that number in a variable.
- Run ClamAV wrapped in a script that counts the lines output, and compares that to the count from step 1.
I tried doing this quickly one time, but couldn't get it working well enough for an automated Jenkins job I set up... so I eventually gave up on it. Sorry :(
- 1,377
This is an old, answered thread but I wanted to try geerlingguy's idea (whom I am a fan :-)) and in case others end up here provide a codified solution.
If you want to scan the folder foo for example, you start the scan with:
clamscan -r foo | tee /tmp/scan.log
or
clamscan -r foo > /tmp/scan.log
You can then run the following script with the arguments of the folder being scanned and the log file, in this example
status.sh foo /tmp/scan.log
Where the contents of the status.sh file is:
#!/bin/bash
folder=$1
log=$2
numFiles=`find $folder -type f | wc -l`
echo $numFiles files to be processed
numProcessed=`wc -l $log | awk '{print $1'}`
percent=`echo "scale=2;$numProcessed*100./$numFiles." | bc`
echo $percent percent complete.
One could combine running of the scan and checking the status into a single script if needed.
- 125
While this is an old thread I still wanted to share my solution using pipeviewer (pv) here:
dir="./Downloads"; clamscan --recursive $dir | pv --line-mode -s $(find "$dir" -type f | wc -l) > /dev/null
- 11
- 2
I use the -i option (Only print infected files.) of clamscan, so I get output only when an infected file is found.
For checking on which file clamscan is currently working, you can use:
lsof -a -d 0-999 -c clamscan /
The lsof options have been taken from https://serverfault.com/a/106408/508349