SSH를 사용하여 원격 노드에서 명령을 실행하는 스크립트가 있습니다. 원격 노드는 장치이므로 변경할 수 없으며 권장되지 않습니다. 이제 다음과 같은 스크립트가 있습니다.
ssh REMOTE-NODE -l login "ls" > output 2>&1
status=$?
이는 $status
ssh 명령의 상태를 갖습니다. $?
원격 명령(이 경우에는 ls이지만 호출된 명령의 경우) 상태를 어떻게 알 수 있나요 ? 상태를 반환할 수 있는 원격 노드에 중간 스크립트를 만들 수 없습니다.
답변1
ssh
평소대로 물건을 반품하지 않으실 건가요?
종료 상태
ssh는 원격 명령의 종료 상태로 종료되거나, 오류가 발생한 경우 255로 종료됩니다.
$ ssh user@localhost 'exit 123' ; echo $?
user@localhost's password:
123
그러나 주석에서 @thrig가 암시했듯이 ssh 클라이언트가 신호로 인해 종료되면 $?
원격 명령의 종료 코드가 아니더라도 255 대신 일반적인 128+ 신호 번호가 표시될 수 있습니다. 대신 빠른 테스트에서는 신호로 인해 원격 명령이 종료되면 ssh
255가 반환되는 것으로 보입니다.