我在创建脚本时遇到了一个问题。它将一些数据复制到另一台服务器,然后使用ssh heredoc连接到该服务器,然后启动位于heredoc内的第二台服务器上的第二个脚本。
我遇到的问题是,如果您通过bash脚本执行第二个脚本(而不是手动启动它),那么它将跳过一个关键步骤,即第二个脚本要求您按enter键,然后输入密码以生成一些文件。
我没有访问第二个脚本的权限,所以我不能更改任何内容。我尝试了所有类型的echo | ./script2.sh combos、printf、heredoc,但都不起作用。编辑: expect在第二台服务器上不可用。
下面是我正在做的例子:
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发布于 2017-01-25 04:27:59
问题是,使用bash -s时,外壳程序从标准输入读取命令,远程脚本也从标准输入读取命令。
您可以让远程bash source从have文档动态生成脚本,而不是将脚本作为标准输入传递给shell,例如:
ssh foo@bar "bash -c 'source <(cat <<EOF
/invoke/your/script.sh
EOF
)'"https://stackoverflow.com/questions/41837418
复制相似问题