我想将curl命令的输出传递给电子邮件,但是当我运行此脚本时,我收到一个空的附件文件:
#!/bin/bash
STATUS=$(curl -I example.com)
echo $STATUS | mail -s "Test" an@email.com
我也试图分组到一个区块,但这也不起作用:
#!/bin/bash
{
curl -I example.com
} | mail -s "Test" an@email.com
操作系统:Red Hat 6.3
# mail -V
12.4 7/29/08
答案 0 :(得分:2)
假设您的邮件二进制文件为this one,请尝试添加选项-a -
。
答案 1 :(得分:1)
编辑:
尝试简单
curl -SIo /dev/stdout example.com 2>/dev/null | mail -s "Test" an@email.com
好吧,如果是邮件问题。您的描述看起来很奇怪,您使用的是哪个版本的邮件?
或者可能直接询问sendmail
:
/usr/sbin/sendmail an@email.com < <(
echo $'From: an@email.com\nTo: an@email.com\nDate: '$(
env LANG=C date +%c)$'\nSubject: Test'
echo
curl -SIo /dev/stdout 2>/dev/null example.com)
你甚至可以建立一些更复杂的工作:
MyVar="$(curl -SIo /dev/stdout 2>/dev/null example.com)"
/usr/sbin/sendmail an@email.com < <(
echo $'From: an@email.com\nTo: an@email.com\nDate: '$(
env LANG=C date +%c)$'\nSubject: Server resp: '${MyVar%%$'\r'*}
echo
echo "$MyVar")
因此,您可以在主题中获得初始服务器响应。
这不是保留 sendmail
功能!
我多年来一直在使用这种方法,首先是在sendmail
下,但这项工作使用相同的语法(即直接调用../sbin/sendmail
二进制文件或包装器,一个格式化的邮件,如标题+空行+正文),所有 MTA 我现在用过(sendmail,qmail,postfix,exim)。
Nota 某些(旧的)MTA会抱怨 CR 或\r
的存在(或不存在),可能是某些{{1}可以帮忙。