使用 Crontab 发送邮件

使用 Crontab 发送邮件

我在 Crontab 中发送邮件时遇到问题

#!/bin/sh
log_direc="/var/log/snort/alert"
email="[email protected]"
echo "TESST" | sendmail $email < output.txt`

它可以根据命令正常运行并可以发送邮件。 电子邮件截图

但是当我把这个脚本放到 Cron 中时

[email protected]
* * * * * /bin/sh /home/weed/Desktop/test.sh

它看起来像这样 第二封电子邮件的截图

我该如何修复?谢谢

答案1

您是否删除了PATHcrontab 顶部的变量?如果缺少该变量,这将解释为什么您的脚本找不到sendmail。典型的 crontab 定义了以下变量。我也为您的脚本添加了该行。

# Global variables
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

* * * * * /bin/sh /home/weed/Desktop/test.sh

crontab顶部MAILTO的通常用于让 cron 知道将邮件发送到何处。在脚本中保留单独的配置。

此外,通过 cron 运行脚本时,您将需要要发送的文件的绝对路径。当您手动运行它时,您似乎处于要在其中执行它的目录中。

您还使用管道将输出发送到echo以及sendmail将信息定向到标准输入。删除标准输入方向,然后将要发送的所有信息放在管道左侧:

log="/var/log/snort/alert/output.txt"
email="[email protected]"
cat $log | sendmail $email

如果您想在发送的文件中添加一些内容,请使用以下命令:

echo -e "Some Header\n\n$(cat $log)" | sendmail $email

相关内容