我有 n 个服务器,例如,,c0001.test.cloud.com
我想在这些服务器之间进行 ssh,例如:从服务器:c0001 进行 ssh 到 c0002,然后退出服务器。返回 c0001 进行 ssh 到 c0003,然后退出服务器。c0002.test.cloud.com
c0003.test.cloud.com
因此,通过这种方式,它将在运行时无需输入任何输入即可执行脚本,并且我们可以拥有 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 变量引用都应该用引号引起来 — — 但以上内容应该可以帮助您入门。