编写将多个“受感染文件”输出添加在一起的 Clamscan 摘要脚本

Posted

技术标签:

【中文标题】编写将多个“受感染文件”输出添加在一起的 Clamscan 摘要脚本【英文标题】:Scripting a clamscan summary that adds multiple "Infected files" outputs together 【发布时间】:2022-01-08 11:31:06 【问题描述】:

我想要一种简单的方法来添加从文本文件中提取的 2 个数字。详情如下:

每天,我对我的 /home/ 文件夹运行 clamscan,它会生成一个简单的日志,如下所示:

Scanning 851M in /home/.

----------- SCAN SUMMARY -----------
Infected files: 0
Time: 0.000 sec (0 m 0 s)
Start Date: 2021:11:27 06:25:02
End Date:   2021:11:27 06:25:02

每周,我都会扫描我的 /home/ 文件夹和外部驱动器,因此我在日志中得到两倍的数据:

Scanning 851M in /home/.

----------- SCAN SUMMARY -----------
Infected files: 0
Time: 0.000 sec (0 m 0 s)
Start Date: 2021:11:28 06:25:02
End Date:   2021:11:28 06:25:02

Scanning 2.8T in /mnt/ext/.

----------- SCAN SUMMARY -----------
Infected files: 0
Time: 0.005 sec (0 m 0 s)
Start Date: 2021:11:28 06:26:30
End Date:   2021:11:28 06:26:30

我不会将日志通过电子邮件发送给自己,我只有一个 bash 脚本,它会发送一封电子邮件(用于日常扫描),该电子邮件会读取“受感染文件:”之后的数字并显示“未找到受感染文件”或“找到受感染的文件,检查日志。” (而且,老实说,一旦我 100% 确信一切都按照我想要的方式运行,我会跳过“未找到受感染的文件”电子邮件。)问题是,我不知道如何使其适用于每周扫描多个文件夹,因为我得到的摘要没有结合这些数字。

我希望脚本找到以“受感染文件:”开头的两行,获取后面的数字,然后添加它们。我想理想的解决方案是使用循环,以防我需要扫描两个以上的文件夹。我已经用 grep 和 cut 尝试了几次,但我只是没有足够的编码人员来完成所有工作。

谢谢!

【问题讨论】:

请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。 【参考方案1】:

这个 bash 脚本将打印出被感染文件的总和:

#!/bin/bash

n=$(sed -n 's/^Infected files://p' logfile)
echo $(($n//$'\n'/+))

或单线:

echo $(( $(sed -n 's/^Infected files: \(.*\)/+\1/p' logfile) ))

【讨论】:

谢谢!我会试一试! 测试它所花费的时间比我预期的要长得多,但它似乎工作得很好!对于它的价值,sed 对我来说是完全不透明的,所以如果你能分解它的工作方式,我会很高兴。

以上是关于编写将多个“受感染文件”输出添加在一起的 Clamscan 摘要脚本的主要内容,如果未能解决你的问题,请参考以下文章

将多个域组添加到本地管理员帐户、验证添加和更改输出颜色的批处理文件

将文件上传到正在运行实时防病毒扫描的服务器

Centos安装 Clam AntiVirus 杀毒软件

Centos安装 Clam AntiVirus 杀毒软件

给你的linux服务器安装一个免费的杀毒软件CLAM吧!K哥

满足条件时,将多个值一起添加?