gpt4 book ai didi

如果命令行输出不包含字符串,则发送邮件的 Bash 脚本

转载 作者:太空宇宙 更新时间:2023-11-03 17:17:52 26 4
gpt4 key购买 nike

我已经在我的网络服务器上安装了 Clamav

我知道有很多shell脚本可以做日常扫描

但不幸的是我无法理解它的台词:)

我想创建一个简单的 bash 脚本来扫描/home 目录并在有受感染文件时给我发送电子邮件

#!/bin/bash
var=$(clamscan -i /home &> /dev/null)
if [[ $var != *Infected files: 0* ]]
then
echo "Subject: There are infected files" | sendmail -v root
fi

但是前面的代码效果不好

注意:代码中的问题不在文件权限中

更新

最终的工作代码

#!/bin/bash
scanoutput=$(clamscan -ri /home 2>&1)
if [ $? -gt 0 ]; then
echo -e "Subject: ClamScan: there are infected files\nTo: root\n\n$scanoutput" | /usr/sbin/sendmail -t
fi

最佳答案

尝试使用exit code 而不是使用字符串输出。在 clamscan 手册中有以下内容

RETURN CODES
0 : No virus found.

1 : Virus(es) found.

2 : Some error(s) occured.

所以你可以尝试这样的事情:

#!/bin/bash
clamscan -i /home &> /dev/null
clamscan_exit_code="$?"

if [[ "${clamscan_exit_code}" == '1' ]]; then
echo "Subject: There are infected files" | sendmail -v root
fi

如果出现错误,您还可以通过检查 exit code == 2 发送特定的电子邮件。

关于如果命令行输出不包含字符串,则发送邮件的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41249113/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com