有谁能告诉我这个剧本的问题是什么?
(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
答案 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
做正确的事情等等。)