N 台のサーバー間の SSH

N 台のサーバー間の SSH

c0001.test.cloud.com、などの n 台のサーバーがありc0002.test.cloud.comc0003.test.cloud.comこれらのサーバー間で次のように ssh を実行したいと考えています。サーバー: c0001 から c0002 に ssh を実行してサーバーを終了します。c0001 に戻り、c0003 に ssh を実行してサーバーを終了します。

このようにすると、実行時に入力を入力せずにスクリプトが実行され、n 個のサーバーを持つことができます。私は 1 つのスクリプトを作成しました:

str1=c0001.test.cloud.com,c0002.test.cloud.com,c0003.test.cloud.com
string="$( cut -d ',' -f 2- <<< "$str1" )"
echo "$string"
for j in $(echo $string | sed "s/,/ /g") do ssh appAccount@j done

しかし、このスクリプトは正常に実行されません。 などのパラメータを渡して確認しましたが、-o StrictHostKeyChecking=no動作<<'ENDSSH'しません。 では、スクリプトを使用して複数のサーバー間で SSH を実現するにはどうすればよいでしょうか?

答え1

  1. をシェル変数として使用するとおっしゃっています 。しかし、それはその変数を、たとえばとして参照する必要があることを意味します。for j in …(values)… do ssh appAccount@j donej$jssh "appAccount@$j"
  2. セミコロン(;) またはssh "appAccount@$j"との間に改行を挿入しますdone

他にも問題があります (たとえば、すべてのシェル変数参照を引用符で囲む必要があります) が、上記の手順で開始できるはずです。

関連情報