bash脚本将[return]键输入到通过ssh heredoc启动的另一个脚本

时间:2017-01-24 19:32:21

标签: bash shell ssh

我遇到了一个我正在制作的剧本的问题。它将一些数据复制到另一个服务器,然后使用ssh heredoc连接到服务器,它启动位于heredoc内的第二个服务器上的第二个脚本。

我遇到的问题是,如果你通过bash脚本执行第二个脚本(而不是手动启动它),那么它将跳过第二个脚本要求你点击[enter]的关键步骤然后输入密码以生成一些文件。

enter

password

我无法访问第二个脚本,因此无法更改任何内容。我尝试过所有类型的回声| ./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

1 个答案:

答案 0 :(得分:0)

问题在于bash -s,shell正在从标准输入读取命令,而远程脚本也在从标准输入读取。

您可以让远程bash source从heredoc动态生成脚本,而不是将脚本作为标准输入传递给shell,例如:

ssh foo@bar "bash -c 'source <(cat <<EOF
/invoke/your/script.sh
EOF
)'"