N 个服务器之间的 SSH

N 个服务器之间的 SSH

我有 n 个服务器,例如,,c0001.test.cloud.com我想在这些服务器之间进行 ssh,例如:从服务器:c0001 进行 ssh 到 c0002,然后退出服务器。返回 c0001 进行 ssh 到 c0003,然后退出服务器。c0002.test.cloud.comc0003.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

  1. 您说的是 ,用作shell 变量。但这意味着您需要将该变量引用为,例如。for j in …(values)… do ssh appAccount@j donej$jssh "appAccount@$j"
  2. 您需要一个分号 (;ssh "appAccount@$j") 或和之间的换行符done

还有其他问题 — — 例如,所有 shell 变量引用都应该用引号引起来 — — 但以上内容应该可以帮助您入门。

相关内容