只是一些背景,我有一个文件,其中包含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重定向。
感谢您的帮助。
答案 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"
。