Bash 스크립트에서 ssh 명령으로 인해 발생하는 중단을 처리하는 방법은 무엇입니까?

Bash 스크립트에서 ssh 명령으로 인해 발생하는 중단을 처리하는 방법은 무엇입니까?

저는 분산 Linux 시스템에서 작업하고 있습니다. 내 Bash 스크립트에서 다음 출력을 grep하고 싶습니다.

ssh $ipaddress ibstat

컴퓨터가 다운되면 위 명령이 중단됩니다. 0이 아닌 값으로 중단 및 종료 bash 스크립트를 처리하는 방법은 무엇입니까?

답변1

ConnectTimeOut특정 환경에 맞게 조정해야 할 수 있는 더 낮은 값 옵션을 사용하십시오 .

$ ssh -o ConnectTimeout=2 $ipaddress
ssh: connect to host 192.168.123.123 port 22: Connection timed out
$ echo $?
255

테스트할 수 있는 반환 값을 얻을 수도 있습니다. 즉, 255명령을 처리하는 동안 오류가 발생했음을 의미합니다.

답변2

다음 timeout유틸리티를 선택할 수 있습니다.

timeout 5 ssh $ipaddress ibstat

5초 후에 0이 아닌 결과로 종료됩니다. 이를 ibstat가 완료하기에 충분한 합리적인 값으로 설정하십시오.

답변3

먼저 호스트 가용성을 확인해 보세요.

if ping -c 1 $ipaddress &> /dev/null
then
  ssh $ipaddress ibstat
else
  exit 1
fi

관련 정보