時々、デバイスを再起動し、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
これら2つのオプションを使用すると、接続が5秒以上切れた場合にsshが終了します。