在bash中将数组填充到ssh

时间:2017-02-16 15:29:35

标签: arrays bash ssh

只是一些背景,我有一个文件,其中包含1000个服务器的新行分隔。我必须将它们读取到一个数组,通过SSH运行大约5个命令。我一直在使用heredoc符号,但似乎失败了。目前我收到一条错误消息,表示主机无法识别。

Error CS2001 Source file 'C:\...\Website\Install\Install.aspx.cs' could not be found.
Error CS2001 Source file 'C:\...\Website\Install\UpgradeWizard.aspx.cs' could not be found.

我得到的输出列出了第一个服务器,但后来列出了数组中的所有服务器。我知道我错过了导致此问题的STDIN重定向。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

你需要一个阵列吗?有什么问题:

while read -r host
do
  ssh "$host" bash -s << "EOF"
  echo "making back up of some file"
  cp /path/to/file /path/to/file.bak
EOF
done < file

答案 1 :(得分:0)

要明确 - 此处存在的问题以及问题中实际包含的唯一的问题,就是您正在使用{{ 1}}在你的循环中,而你指定$1作为包含在每次循环调用时迭代的条目的变量。

也就是说:$i需要改为ssh "$1"