消息体为空;希望没关系

消息体为空;希望没关系

我有以下命令作为 cronjob 的一部分。当我通过 cron 或在命令行运行命令时,我得到Null message body; hope that's ok.

电子邮件的内容是空的,但当我检查文件时,/tmp/sdplogs.out它包含内容。

该脚本/dproxy/scripts/cleanSDP2xLogs.sh将输出发送到文件/tmp/sdplogs.out

我究竟做错了什么?任何帮助将不胜感激。

$ /dproxy/scripts/cleanSDP2xLogs.sh | mail -s 'SDP2.X Prod LogArchiving Report' [email protected] < /tmp/sdplogs.out
Null message body; hope that's ok

答案1

您需要将 替换|&&或让脚本将数据输出到 stdout 并使用|

使用 时&&mail仅当脚本以 0 退出时才会运行该命令。

使用管道字符时,您的脚本需要将数据发送到 stdout,以便管道可以将其传递到mail.

在您编写的内容中,脚本将数据写入文件并mail从文件中读取在平行下——并mail最终在脚本写入任何内容之前读取该文件。

答案2

/dproxy/scripts/cleanSDP2xLogs.sh | mail -s 'SDP2.X Prod LogArchiving Report' [email protected] < /tmp/sdplogs.out

您正在将命令的输出cleanSDP2xLogs.sh通过管道传输mail,我认为这不是您的意思。看来您想首先运行cleanSDP2xLogs.sh生成 /tmp/sdplogs.out ,然后将 /tmp/sdplogs.out 输入到邮件命令中。

如果是这种情况,只需替换|;就可以了:

/dproxy/scripts/cleanSDP2xLogs.sh; mail -s 'SDP2.X Prod LogArchiving Report' [email protected] < /tmp/sdplogs.out

答案3

作为附件使用的另一种方法-a

/dproxy/scripts/cleanSDP2xLogs.sh
mail -s 'SDP2.X Prod LogArchiving Report' -a /tmp/sdplogs.out [email protected] << ""

相关内容