0

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

OS: レッドハット 6.3

# mail -V
12.4 7/29/08
4

2 に答える 2

2

あなたのメールバイナリがこれだと仮定して、オプションを追加してみてください-a -

于 2012-12-14T21:42:12.867 に答える
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最初は .現在 (sendmail、qmail、postfix、exim)。../sbin/sendmail

注意一部の (古い) MTA は、 CRまたは\r行末の存在 (または存在しない) について不平を言っていsed 's/$/\r/'ます。

于 2012-12-14T22:19:56.917 に答える