How to run ssh command until succeeded?
Another option would be to use until
.
until ssh [email protected]; do
sleep 5
done
If you do this repeatedly for a number of hosts, put it in a function in your ~/.bashrc
.
repeat()
{
read -p "Enter the hostname or IP of your server :" servername
until ssh $servername; do
sleep 5
done
}
ssh [email protected]
until !!; do sleep 5 ; done
The !!
to repeat the last command.
OpenSSH has a ConnectionAttempts
setting that does almost what you want. The default is 1 but you can change it in ssh_config
or on the command-line:
ssh -o 'ConnectionAttempts 10' ...
Unfortunately you can't adjust the attempt interval which is fixed at 1 second, but you can adjust the connection attempt time-out ConnectTimeout
(in seconds) in the same fashion.