再起動し、リモートシステムにSSH経由で接続します。

再起動し、リモートシステムにSSH経由で接続します。

SSHを介してリモートサーバーでいくつかのコマンドを実行するbashスクリプトを作成したいと思います。その後、リモートサーバーを再起動してSSHを介して再接続し、追加のコマンドを実行する必要があります。

私はこのコードを使用しています:

    ssh $theip 'sudo reboot'
    echo "starting sleep---1"
        sleep 30
        echo " finished sleeping1"
        while ! ping -c 1 $theip &>/dev/null; do echo "waiting..."; done
        echo "starting sleep---2"
        sleep 45
        echo " finished sleeping2"
        echo "finished rebooting"
ssh $theip 'commands....'

問題は、サーバーがsshを実行する前にpingを返し、スクリプトが失敗することです。一部のサーバーには45秒以上の省電力時間が必要です。別の方法がありますか?たとえば、whileループでpingの代わりにsshを使用してみてください。

ありがとう、

ベストアンサー1

"sticky ssh"を取得するには、次のコマンドを試してください。

while true; do command ssh "$@"; [ $? -eq 0 ] && break || sleep 0.5; done

ソース: http://backreference.org/2013/04/26/ssh-auto-reconnect/

おすすめ記事