
我有 n 個伺服器,例如c0001.test.cloud.com
、c0002.test.cloud.com
,c0003.test.cloud.com
我想在這些伺服器之間執行 ssh,例如:從伺服器:c0001 執行 ssh 到 c0002,然後退出伺服器。返回 c0001,透過 ssh 連接到 c0003,然後退出伺服器。
因此,透過這種方式,它將在運行時執行腳本而無需輸入任何輸入,並且我們可以擁有n個伺服器。我寫了一個腳本:
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
- 你是說 ,用作shell 變數。但這意味著您需要將該變數引用為,例如。
for j in …(values)… do ssh appAccount@j done
j
$j
ssh "appAccount@$j"
- 您需要一個分號(
;
ssh "appAccount@$j"
) 或和之間的換行符done
。
還有其他問題——例如,所有 shell 變數引用都應該被引用——但上面的內容應該可以幫助您入門。