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테스트는진짜지정된 파일의 크기가 0이 아닌 경우.

관련 정보