
c0001.test.cloud.com
、などの n 台のサーバーがありc0002.test.cloud.com
、c0003.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
- をシェル変数として使用するとおっしゃっています 。しかし、それはその変数を、たとえばとして参照する必要があることを意味します。
for j in …(values)… do ssh appAccount@j done
j
$j
ssh "appAccount@$j"
- セミコロン(
;
) またはssh "appAccount@$j"
との間に改行を挿入しますdone
。
他にも問題があります (たとえば、すべてのシェル変数参照を引用符で囲む必要があります) が、上記の手順で開始できるはずです。