때때로 장치를 재부팅하고 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
autossh
SSH 세션을 활성 상태로 유지하십시오. 올바른 매개변수를 사용하면 현재 연결할 수 없는 경우에도 시작할 수 있으며 성공할 때까지 시도합니다. 이것은 잘 작동하지만 원하는 경우~에 대한연결 부분이 대화형 세션과 잘 작동하려면 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 0
autossh의 연결 확인을 비활성화하고, 모든 후속 옵션을 ssh에 전달합니다. -o
이 두 가지 옵션을 사용하면 연결이 5초 이상 끊어지면 ssh가 종료됩니다.