mysqldump をファイルに保存すると、エラーが発生するとエラー情報とともに cURL 要求がトリガーされます。

mysqldump をファイルに保存すると、エラーが発生するとエラー情報とともに cURL 要求がトリガーされます。

コマンドラインで実行するようにバックアップを設定しようとしていますが、エラーが発生した場合はそのエラーを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.logJSONテキスト文字列に正しくエンコードするためにも使用されます。

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テストは本物指定されたファイルのサイズがゼロでない場合。

おすすめ記事