仅当有需要报告的内容时,我如何才能使 cron 成为电子邮件报告审核?

仅当有需要报告的内容时,我如何才能使 cron 成为电子邮件报告审核?

我设置了每日 cron 作业来检查文件是否在前一天发生变化,由于这些文件不应该改变,所以我收到空报告,我该如何更改它以发送电子邮件来防止这种情况发生。

这是我的 cron 作业行

1 0 * * * root /sbin/aureport -k -ts yesterday 00:00:00 -te yesterday 23:59:59

这是我通常会收到的邮件

Key Report
===============================================
# date time key success exe auid event
===============================================
<no events of interest were found>

答案1

建议您从 Cron 运行脚本来查找审计日志文件是否已更改。

所以你的 cron 会调用你的脚本

01 00 * * * sh /bin/script.sh

这个名为“script.sh”的脚本类似于以下内容保存在/bin/位置

替代答案

    #!bin/bash
/sbin/aureport -k -ts yesterday 00:00:00 -te yesterday 23:59:59 > /dev/shm/auditcheck.log

    if [ -z "$(grep "no events of interest were found" /dev/shm/auditcheck.log)" ]; then
      /sbin/aureport -k -ts yesterday 00:00:00 -te yesterday 23:59:59
    else
      > /dev/null 2>&1
    fi

此编辑/替代脚本保存了 aureport 输出,然后使用 -z string 查找输出以查找无事件短语,如果字符串的长度为零,则返回 True。因此,如果不存在短语“未发现感兴趣的事件”,则运行您的审计报告。否则将程序的输出重定向到 /dev/null。包括标准错误和标准输出。

答案2

也许是一种更简单、经过修改的方法,仍然可以在单个 cron 行中执行(/etc/cron.d/audit-report):

1 0 * * * root /sbin/aureport -k -ts yesterday 00:00:00 -te yesterday 23:59:59 | /bin/grep -q "^<no events of interest were found>" || /sbin/aureport -k -ts yesterday 00:00:00 -te yesterday

相关内容