清除exim队列的脚本&通过电子邮件发送电子邮件和电子邮件主题

时间:2014-05-06 15:15:02

标签: linux bash awk

有谁能告诉我这个剧本的问题是什么?

(printf "To:myemail@mydomain.com\nSubject: Mail queue cleanup for for My-VPS-Linux\n\n" ; /usr/sbin/exim -bp | awk '/^ *[0-9]+[mhd]/{print "/usr/sbin/exim -Mrm " $3}' ) | bash | /usr/sbin/sendmail myemail@mydomain.com

一旦我通过SSH运行,我就会收到此错误

bash: line 1: To:myemail@mydomain.com: command not found
bash: line 2: Subject:: command not found

我想要实现的是在cronjob中定义后通过此脚本清除exim队列。当我运行以下脚本

/usr/sbin/exim -bp | awk '/^ *[0-9]+[mhd]/{print "/usr/sbin/exim -Mrm " $3}' ) | bash | /usr/sbin/sendmail myemail@mydomain.com

它工作得很好并在清除电子邮件队列后向我发送电子邮件但它没有发布任何主题或电子邮件地址......

此致 Faraz H. Khan

2 个答案:

答案 0 :(得分:1)

因为您已将子shell放在第一位,所以您的Subject:和To:打印行将在exim的输出之前打印,并由bash处理。您应该稍后移动子shell:

/usr/sbin/exim -bp | awk '/^ *[0-9]+[mhd]/{print "/usr/sbin/exim -Mrm " $3}' | (printf "To:myemail@mydomain.com\nSubject: Mail queue cleanup for for My-VPS-Linux\n\n"; bash) | /usr/sbin/sendmail myemail@mydomain.com

这会在任何其他输出之前打印您的Subject:和To:行,但bash将不会处理这些行。

答案 1 :(得分:0)

您正在将打印输出发送到bash。您需要将打印输出发送到sendmail。您的)位置错误。 (假设来自exim|awk管道的输出是您获得的电子邮件的正文,并且按照您尝试的方式预先添加标题将使sendmail做正确的事情等等。)

相关问题