2017-05-31 26 views
0

10分ごとにDBのバックアップをとるクローンがあります。バックアップが失敗するたびにSMSを受信したい。cronjobのバックアップに失敗した場合にcurlコマンドを実行

例:

*/1 * * * * sudo /usr/local/sbin/mysql.sh 2>&1 | curl 'http:www.smsapi.com/user=username&pass=password&text=$errormsg'

は現在、それがどんなSMSを送信していません。カールにエラーメッセージを追加するにはどうすればよいですか? (私はまたSMSの代わりに電子メールのためにこれを試みたが、それも動作しない)。

答えて

0

メール:

mysql.sh 2>&1 | mail -s "Mysql backup" -E [email protected] 

カール:

mysql.sh 2>&1 | curl "http:www.smsapi.com/user=username&pass=password&text=`cat -`" 

ご注意:コマンドを使用して、二重引用符の代わりに、アポストロフィとバッククォートは、パラメータにSTDの入力に変換します。変換はむしろ原始的であり、特殊文字をURL引用することはありません。

+0

エラーがなければ空のメールを送信します。 – Ash

+0

修正済み。オプション-Eは、空の本文の送信を防ぎます。 – phd

+0

ありがとう、私の電子メールの問題を修正しました。しかし、SMSで運がない。 – Ash

0

エラーハンドラがコマンドが失敗した場合にのみ呼び出されるように、ダブルパイプcommand || error-handlerを使用する必要があります。

ロジックが逆転し、成功が見つからなかった場合には成功ハンドラとしてWDT.ioなどのサービスを使用して警告することをお勧めします。その理由は、エラーハンドラを使用するときには決して見つけられないcronジョブ自体の実行に失敗する可能性があるからです。

2番目の質問では、エラーを追加する方法として、$?を使用して以前の戻りコードにアクセスできます。

関連する問題