訊息體為空;希望沒關係

訊息體為空;希望沒關係

我有以下命令作為 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] << ""

相關內容