我遇到了一个我正在制作的剧本的问题。它将一些数据复制到另一个服务器,然后使用ssh heredoc连接到服务器,它启动位于heredoc内的第二个服务器上的第二个脚本。
我遇到的问题是,如果你通过bash脚本执行第二个脚本(而不是手动启动它),那么它将跳过第二个脚本要求你点击[enter]的关键步骤然后输入密码以生成一些文件。
我无法访问第二个脚本,因此无法更改任何内容。我尝试过所有类型的回声| ./script2.sh combos,printf,heredoc,什么都不行。编辑:期望在第二台服务器上不可用。
我正在做的事情的例子:
scp -r $dir xxxx@xxx.xx.x.xx:/as/df/qwerty/
ssh xxxx@xxx.xx.x.xx "bash -s" << EOF
# install
/as/df/qwerty/${choice}/./install_${choice}
EOF
答案 0 :(得分:0)
问题在于bash -s
,shell正在从标准输入读取命令,而远程脚本也在从标准输入读取。
您可以让远程bash source
从heredoc动态生成脚本,而不是将脚本作为标准输入传递给shell,例如:
ssh foo@bar "bash -c 'source <(cat <<EOF
/invoke/your/script.sh
EOF
)'"