성공할 때까지 ssh 명령을 실행하는 방법은 무엇입니까?

성공할 때까지 ssh 명령을 실행하는 방법은 무엇입니까?

때때로 장치를 재부팅하고 ssh장치가 준비되면 재부팅해야 합니다.

명령이 성공할 때까지 5초마다 ssh 명령을 실행하고 싶습니다.

내 첫 번째 시도:

watch -n5 ssh [email protected] && exit 1

어떻게 해야 하나요?

답변1

또 다른 옵션은 를 사용하는 것입니다 until.

until ssh [email protected]; do
    sleep 5
done

여러 호스트에 대해 이 작업을 반복적으로 수행하는 경우 ~/.bashrc.

repeat()
{
read -p "Enter the hostname or IP of your server :" servername
until ssh $servername; do
    sleep 5
done
}

답변2

ssh [email protected]
until !!; do sleep 5 ; done

!!이전 명령을 반복합니다 .

답변3

OpenSSH는 ConnectionAttempts귀하의 요구에 거의 맞게 설정되었습니다. 기본값은 1이지만 명령줄에서 ssh_config또는 명령줄에서 변경할 수 있습니다.

ssh -o 'ConnectionAttempts 10' ...

ConnectTimeout아쉽게도 1초로 고정되어 있는 시도 간격을 조정할 수는 없지만 같은 방법으로 연결 시도 시간 초과(초 단위)를 조정할 수 있습니다.

답변4

autosshSSH 세션을 활성 상태로 유지하십시오. 올바른 매개변수를 사용하면 현재 연결할 수 없는 경우에도 시작할 수 있으며 성공할 때까지 시도합니다. 이것은 잘 작동하지만 원하는 경우~에 대한연결 부분이 대화형 세션과 잘 작동하려면 screen또는 동등한 것과 결합해야 합니다.

나는 이것을 추천한다:

AUTOSSH_POLL=5 AUTOSSH_GATETIME=0 autossh -M 0 -o ServerAliveInterval=5 -o ServerAliveCountMax=1 user@host

그러나 자세한 내용은 맨 페이지를 참조하십시오. 위의 매개변수를 사용하면 autossh매초마다 ssh를 시작하려고 시도하고 AUTOSSH_POLL, AUTOSSH_GATETIME=0첫 번째 시도가 실패하면 다시 시도하고(그래서 이것이 확실히 원하는 것입니다), -M 0autossh의 연결 확인을 비활성화하고, 모든 후속 옵션을 ssh에 전달합니다. -o이 두 가지 옵션을 사용하면 연결이 5초 이상 끊어지면 ssh가 종료됩니다.

관련 정보