是否可以检查当前正在运行的 clamAV 扫描的进度?

是否可以检查当前正在运行的 clamAV 扫描的进度?

我搜索了好多地方,但目前还没有找到可行的解决方案。我有一个正在进行的扫描,我以为它会在某个时间完成,但不幸的是它还没有完成。所以我想知道是否有办法检查这个正在进行的扫描进度。

答案1

据我所知,这是不可能的——你可以将所有扫描的文件打印到控制台,或者只打印受感染的文件。最后,ClamAV 将打印一份摘要。我还没有找到获取任何持续统计数据的方法。

我能想到的唯一破解它的方法是:

  1. 首先,递归计算 ClamAV 将扫描的目录中的所有文件数量,然后将该数字存储在变量中。
  2. 运行包含脚本的 ClamAV,计算输出的行数,并将其与步骤 1 中的计数进行比较。

我曾经尝试过快速完成此操作,但无法使其对我设置的 Jenkins 自动化作业运行良好……所以我最终放弃了。抱歉 :(

答案2

这是一个旧的、已回答过的帖子,但我想尝试一下 geerlingguy 的想法(我是他的粉丝:-)),以防其他人最终来到这里提供一个编码的解决方案。

如果你想扫描文件夹例如,你可以使用以下命令开始扫描:

clamscan -r foo | tee /tmp/scan.log

或者

clamscan -r foo > /tmp/scan.log

然后,您可以使用正在扫描的文件夹和日志文件的参数运行以下脚本,在此示例中

status.sh foo /tmp/scan.log

其中status.sh文件的内容为:

#!/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.

如果需要的话,可以将扫描的运行和状态检查合并到单个脚本中。

答案3

虽然这是一个老话题,但我仍然想分享我的解决方案管道查看器(pv)此处:

dir="./Downloads"; clamscan --recursive $dir | pv --line-mode -s $(find "$dir" -type f | wc -l) > /dev/null

答案4

我使用-iclamscan 的选项(仅打印受感染的文件),因此只有在发现受感染的文件时才会获得输出。

要检查 clamscan 当前正在处理哪个文件,您可以使用:

lsof -a -d 0-999 -c clamscan /

lsof 选项取自https://serverfault.com/a/106408/508349

相关内容