これは、cronジョブとして実行されるbashスクリプトにあるコードです。 cronジョブはルートとして実行されます。
/usr/sbin/sendmail [email protected]<<EOF
subject:Backup Error!
from:backup@server01
$error
EOF
この後にコードがあり、私が受け取るメールは次のとおりです。
マシンのrootユーザーから。
メッセージには以下が含まれます。
subject:Backup Error!
from:backup@server01
$error
EOF
More code...
that is in the script
all the way to the end...
私は他のバリエーションを試しましたが、これが一番近いです。これを通常のスクリプトで試したところ、正常に機能しました。何が起こっているのか、件名とフォームの送信者を指定してこのメールを送信するにはどうすればよいですか?
以前の回答はすでに言及しています:
追加の修正:
-i
コマンド行オプションは、ドットで始まる行の特別な処理を停止します--
は、受信者のアドレスからコマンドラインオプションを分離します(推奨スタイル)修正されたスクリプト:
/usr/sbin/sendmail -i -- [email protected] <<EOF
subject: Backup Error!
from:backup@server01
$error
EOF
Sendmail(および一般的には電子メール)は、ヘッダーと本文の間に空白行が必要です。次の例が機能しました。
$ sendmail [email protected] <<EOF
> subject: testing
> from: [email protected]
>
> This is my body!
> EOF
(明らかに、そこに>
sを貼り付けても機能しません。ヘッダーとエラーメッセージの間に空白行があるように、実行内容を変更するだけです)。
2番目の制限文字列EOF
の前または後に空白文字を使用しないことをお勧めします。制限文字列の前または後ろにスペースを1つだけ使用すると、その特殊な目的のコードブロックは機能しなくなります。したがって、次のみを使用します。
EOF
この意味で 第19章Here Documents のようなbashスクリプトガイドを読む必要があります。