私は私が実行しているさまざまなNodeサーバーのhttp応答をテストし、Nginxで502エラー応答(1つ以上のサーバーがクラッシュしたことを意味)がある場合は、私に電子メールを送信するスクリプトを作成しようとしています。
私のアプローチはシェルスクリプトを作成してクローンジョブとして実行することです。ssmtpを使用してGmailを介してメッセージを送信します。以下はスニペットです。
messageTemplate=`cat /home/sites/mailmsg.txt`
...
email="$messageTemplate One or more sites is down!"
mailCommand=`mail -s [email protected] < $email`
ssmtpメールテンプレート(受信者:、送信者:など)の内容を問題なくインポートできます。私はメールラインがうまく接続されていると確信しています。問題は、mailCommand行が次の行で失敗することです。
line 31: $email: ambiguous redirect
mail
基本的に、messageTemplate +カスタムメッセージを最初のコマンド(この場合)にパイプする正しい方法は何ですか?
答え1
私の修正ビーズは、あなたのメッセージテキストに次のいずれかまたはいずれかを<
含めることができると思います>
。
私が見るにはあなたの用途が正しいと思います。
mailCommand=`mail -s [email protected] < $email`
必要に応じて実行されません。これは$email
ファイル名で内容を取り、($email
いくつかの単語が含まれているのでやや失敗します)、その内容を読み取ろうとし、その内容をcommandに入れてから、コマンドmail
の出力をmail
次に割り当てます。変数mailCommand
。
私の考えでは、あなたは次のようなものが欲しいということです
echo "$email" | mail -s [email protected]
つまり、変数に文字列を取得してemail
メーラーに供給しますか?
(しかし、今では多くの人が逆$(foo)
引用符の代わりにコマンド置換表記を好む。)
答え2
messageTemplate=`cat /home/sites/mailmsg.txt`
...
mailCommand=`echo "$messageTemplate One or more sites is down"\! | mail -s [email protected]`
または
email="$messageTemplate One or more sites is down"\!
mailCommand=`echo "$email" | mail -s [email protected]`