接続できないサーバーにアクセスしようとしたときにSSHタイムアウトをすばやく設定する

接続できないサーバーにアクセスしようとしたときにSSHタイムアウトをすばやく設定する

私たちの環境のすべてのサーバーを終了するスクリプトを書いた。ただし、一部のサーバーに最初から接続できない場合やサーバーがダウンした場合、スクリプトは中断され、何も起こりません。一部のサーバーに接続できない場合はどうすればよいですか?

#!/bin/bash
#script for Shutting down all VM & BM.
Region=$1
user=$2
region_file_path="/region/$Region.txt"
host=`cat $region_file_path`
key_path="/root/.ssh/id_rsa_adminpod"
for i in $host
do
#       echo "Shutting down Host in $Region with ip addrss $i"
        ssh -i $key_path -p 2222 $user@$i "sudo init 0" &> /dev/null
        if [ $? -ne  0 ]; then
           echo "$i is shutdown!"
        else
           echo "There is some issue, try again"
           exit 1
        fi
done

ベストアンサー1

最も簡単な解決策は、接続タイムアウトを適切な時間に設定することです。

ssh -o ConnectTimeout=10 -i $key_path -p 2222 $user@$i "sudo init 0" &> /dev/null

10秒で十分です。

Ansibleなどの他のツールを使用してタスクを自動化することもできます。

おすすめ記事