【发布时间】:2017-05-03 02:23:48
【问题描述】:
我有一个由 root 每小时运行的 cron 作业,检查是否存在绊线违规。它仍然每小时给我发一封电子邮件,不管我有没有违规行为。如果存在违规行为,则包括报告。如果没有违规,它会向我发送一封只有主题行的空白电子邮件。
这是脚本:
#!/bin/bash
# Save report
tripwire --check > /tmp/twreport
# Count violations
v=`grep -c 'Total violations found: 0' /tmp/twreport`
# Send report
if [ "$v" -eq 0 ]; then
mail -s "[tripwire] Report for `uname -n`" user@example.com < /tmp/twreport
fi
【问题讨论】:
-
如果发送的是空白邮件,这似乎表明
/tmp/twreport是空的。这肯定会导致v被设置为零。建议您调试实际写入该文件的内容。 -
文件被写入 - 它显示 0 次违规或 x 次违规。 v 是 0 或 1。当我手动运行它时它工作正常,只有在 cron 中它不起作用。
-
终端和 cron 作业之间的环境存在巨大差异,因此这可能是这里的问题。参见例如stackoverflow.com/questions/1972690/…
-
啊,脚本中没有tripwire 的完整路径。我已经把它添加进去了,看看它是否执行
标签: bash email debian-jessie tripwire