コマンドラインで実行するようにバックアップを設定しようとしていますが、エラーが発生した場合はそのエラーをAPIエンドポイントに送信します。似ている:
mysqldump -u whatever -pwhatever somedb > somebackupfile.sql || curl (..options..) -d $'{error:<ERROR FROM FIRST COMMAND>}'
どんな助けでも大変感謝します!
ベストアンサー1
エラーストリームを別のファイルに保存するか、curl
エラーが発生した場合は「it」に保存します。その後、削除します(または維持すると便利ですか?)。
if ! mysqldump -u whatever -pwhatever somedb >somebackupfile.sql 2>error.log
then
json=$( jq -c -n --arg message "$(cat error.log)" '{ error: $message }' )
curl ...options... -d "$json"
fi
rm -f error.log # or not
jq
これは、エラー出力をerror.log
JSONテキスト文字列に正しくエンコードするためにも使用されます。
error.log
プログラムが正常な終了状態を返さないため、ファイルが空でないときにファイルの内容が転送されるようにロジックを変更したい場合mysqldump
(現在、この特定のプログラムがどのように機能するかわかりません):
mysqldump -u whatever -pwhatever somedb >somebackupfile.sql 2>error.log
if [ -s error.log ]; then
json=$( jq -c -n --arg message "$(cat error.log)" '{ error: $message }' )
curl ...options... -d "$json"
fi
rm -f error.log # or not
ファイル-s
テストは本物指定されたファイルのサイズがゼロでない場合。