我正在尝试编写一个脚本,我有一个循环登录到多个远程计算机并在每台计算机内执行脚本。这是一个例子:
for ((j=1; j < 2; j++)); do
mchname="n"$j
ssh -T $mchname <<'ENDSSH'
./run_script < input > output &
ENDSSH
done
每当我尝试执行上面的脚本时,我得到: “警告:此处 - 文件在第37行由文件结尾分隔(想要”ENDSSH“)”
我是ssh的新手,所以我确信我犯了一个愚蠢的错误。谁能建议我一个解决方案? 感谢。
答案 0 :(得分:13)
您的bash脚本中存在问题。无法缩进heredoc结束标记(脚本中的ENDSSH)。
请改为尝试:
ssh -T $mchname <<'ENDSSH'
./run_script < input > output &
ENDSSH
# ^ no indentation for that line
修改强>
此外,您可以通过将其作为参数传递给ssh来运行远程系统上的命令,而不是将其作为标准输入提供。该命令将由用户的远程shell执行:
ssh -T $mchname './run_script < input > output &'