SSHでサーバーに接続し、いくつかの手動コマンドを実行して終了します。

SSHでサーバーに接続し、いくつかの手動コマンドを実行して終了します。

複数のホストに順次(並列ではなく)SSHに接続し、既存のSSHセッションが終了するのを待つスクリプトを生成できますか?

ホストが50人を超えています。次のように進んでください。

  1. SSHホスト1
  2. ホスト1のコマンドプロンプトで一連の操作を手動で実行し、セッションを終了します(手動)。
  3. スクリプトは終了を自動的に検出し、SSH を介して次のホストに接続します。

rhel 6.xの既存のツールを活用してみてください。組み込みのツールを使用してこれを行った人がいるかどうか疑問に思います。

次のようにできます。ただし、作業が完了するまでスクリプトを待つ方法を知っているだけです。

usr=test
svrs=("192.168.18.48" "192.168.191.237" )
for x in ${!svrs[*]} ; do
        ip=`echo ${svrs[x]}`
        ssh $usr@$ip
done 

答え1

それがまさにそれです。

シェルの観点からは、ssh $usr@$ipこれはユーザーと対話できる他のプログラムの起動と変わりません。プログラムの入力と出力がリダイレクトされず、プログラムがバックグラウンドで実行されないため、プログラムは必要に応じてユーザーと対話できます。

「作業が完了するまでスクリプトを待つようにする」ために特別な作業を行う必要はありません。スクリプトは、「ssh」コマンドが完了するまで、つまりSSHセッションが終了するのを待ちます。

関連情報