명령줄에서 실행되도록 백업을 설정하려고 하는데, 오류가 발생하면 해당 오류를 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
테스트는진짜지정된 파일의 크기가 0이 아닌 경우.