我在 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
您是否删除了PATH
crontab 顶部的变量?如果缺少该变量,这将解释为什么您的脚本找不到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