You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写bash脚本汇总clamscan多目录扫描日志的感染文件总数量

ClamAV多扫描段感染文件数求和方案

核心统计命令

直接用awk即可实现任意数量扫描段的感染数值自动累加,无需修改逻辑即可适配后续新增的扫描目录:

# 替换scan.log为你的实际日志文件路径
awk '/^Infected files:/ {sum += $3} END {print sum+0}' scan.log

命令说明:

  • 自动匹配日志中所有以Infected files:开头的行
  • 提取每行第三列的数值累加求和
  • 末尾加+0是为了兼容无匹配行的场景,确保输出为数字0而非空值

完整可用脚本示例

适配你现有发邮件、后续取消无感染通知的需求:

#!/bin/bash
# 配置项,按实际情况修改
SCAN_LOG_PATH="/your/path/to/clamscan.log"
ALERT_EMAIL="your@admin.email"

# 计算总感染数
TOTAL_INFECT=$(awk '/^Infected files:/ {sum += $3} END {print sum+0}' "${SCAN_LOG_PATH}")

# 告警逻辑
if [ ${TOTAL_INFECT} -gt 0 ];then
    # 发现感染时发送告警
    echo "ClamAV扫描结束,共发现${TOTAL_INFECT}个感染文件,请尽快登录服务器查看日志${SCAN_LOG_PATH}处理" | mail -s "【高危告警】ClamAV发现感染文件" ${ALERT_EMAIL}
else
    # 无感染时如果不需要发通知,直接注释掉下面3行即可
    echo "ClamAV扫描结束,未发现感染文件" | mail -s "【常规通知】ClamAV扫描完成无异常" ${ALERT_EMAIL}
fi

备选grep+cut实现方案

如果你更习惯用grep和cut组合,也可以用以下命令实现相同效果:

grep '^Infected files:' scan.log | cut -d ' ' -f 3 | paste -sd+ | bc

内容的提问来源于stack exchange,提问作者KneadToKnow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 06:57:04