Bashスクリプトでsshコマンドによって引き起こされるハングを処理する方法は?

Bashスクリプトでsshコマンドによって引き起こされるハングを処理する方法は?

私は分散Linuxシステムで作業しています。私のBashスクリプトから次の出力をgrepしたいと思います。

ssh $ipaddress ibstat

コンピュータがダウンすると、上記のコマンドは中断されます。ゼロ以外の値で中断および終了bashスクリプトを処理する方法は?

答え1

ConnectTimeOut特定の環境に合わせて調整する必要がある低値オプションを使用してください。

$ ssh -o ConnectTimeout=2 $ipaddress
ssh: connect to host 192.168.123.123 port 22: Connection timed out
$ echo $?
255

テストできる戻り値を取得することもできます。つまり、255コマンドの処理中にエラーが発生したことを意味します。

答え2

次のtimeoutユーティリティを選択できます。

timeout 5 ssh $ipaddress ibstat

5秒後、ゼロ以外の結果で終了します。これをibstatが完了するのに十分な合理的な値に設定してください。

答え3

まず、ホストの可用性を確認してください。

if ping -c 1 $ipaddress &> /dev/null
then
  ssh $ipaddress ibstat
else
  exit 1
fi

関連情報