ssh 중에 오류가 발생했는지 확인하는 방법은 무엇입니까?


8

배포 스크립트를 작성 중이며 오류가 발생하면 롤백해야합니다.

예 :

#!/bin/bash
ssh myapp '
    mkdir /some/dir
    # check if above command failed, and execute rollback script if needed
'
# or maybe do it from here?

지금이 스크립트를 실행할 때 mkdir이 실패하면 스크립트가 화면에 인쇄되고 계속 실행됩니다. 그 오류를 잡아서 그것에 대해 뭔가를해야합니다.

답변:


6

종료 상태 ssh는 원격 명령의 종료 상태입니다. 예를 들어

ssh myapp 'exit 42'
echo $?

42를 인쇄해야합니다 ( $?마지막으로 실행 된 명령의 종료 상태 임).

한 가지 옵션은 mkdir실패한 경우 즉시 종료하는 것입니다 .

ssh myapp 'mkdir /some/dir || exit 42; do-more-stuff'
if [[ $? = 1 ]]; then
   echo "Remote mkdir failed"
fi

가능하면 스크립트에서 원격 오류를 처리하는 것이 좋습니다.


5

실제로 오류 메시지 를 잡으려면 다음을 시도하십시오.

#!/bin/bash
result=`ssh myapp 'mkdir /some/dir' 2>&1`
if [[ -n $result ]]; then
    echo "the following error occurred: $result"
fi

이로써 표준 오류 출력을 표준 출력으로 재지 정하고 ssh 명령의 출력을에 저장하십시오 $result. 오류 코드 / 종료 상태 만 필요한 경우이 답변을 참조하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.