
Ich habe n Server, z. B. c0001.test.cloud.com
, c0002.test.cloud.com
und c0003.test.cloud.com
ich möchte das SSH zwischen diesen Servern folgendermaßen durchführen: Vom Server: c0001 aus SSH zu c0002 durchführen und dann den Server beenden. Kehren Sie zu c0001 zurück, führen Sie das SSH zu c0003 durch und beenden Sie dann den Server.
Auf diese Weise wird das Skript ausgeführt, ohne dass während der Laufzeit eine Eingabe erforderlich ist, und wir können n Server haben. Ich habe ein Skript geschrieben:
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
Aber dieses Skript läuft nicht einwandfrei. Ich habe es auch überprüft, indem ich Parameter wie: übergeben habe, -o StrictHostKeyChecking=no
aber <<'ENDSSH'
es funktioniert nicht. Wie können wir also mithilfe von Skripten SSH zwischen mehreren Servern erreichen?
Antwort1
- Sie meinen , als Shell-Variable verwenden . Das bedeutet aber, dass Sie diese Variable beispielsweise als referenzieren müssen .
for j in …(values)… do ssh appAccount@j done
j
$j
ssh "appAccount@$j"
- Sie benötigen ein Semikolon (
;
) oder eine neue Zeile zwischenssh "appAccount@$j"
unddone
.
Es gibt noch weitere Probleme – beispielsweise sollten alle Shell-Variablenreferenzen in Anführungszeichen gesetzt werden – aber das oben Genannte sollte Ihnen den Einstieg erleichtern.