远程脚本在 vagrant 远程命令后过早终止

Remote script terminating prematurely after vagrant remote command

我在远程服务器上配置了 vagrant boxes(my-server 在我的例子中)。我正在尝试通过 SSH 会话从我的机器 运行 一组 remote commands on a vagrant box

ssh me@my-server << "ENDSSH"

    cd /dir/to/vagrant

    vagrant status my_box
    vagrant ssh my_box -- "ls"

    echo "Good bye!"

ENDSSH

前3条命令正确执行,但第四条命令一直没有执行。打印 vagrant ssh my_box -- "ls" 的输出后,SSH 会话关闭。对于我在 my_box 上尝试 运行 的任何命令,都会发生这种情况。

如果我创建一个包含上述命令的脚本,手动登录 my-server 和 运行 脚本,所有命令都会执行,包括 echo "Good bye!".

vagrant ssh my_box -- "ls" 是否可能产生终止 ssh 会话的 EOF?有没有办法以某种方式捕获 EOF 令牌然后继续脚本?

注意: 这个问题与 another question 我问的有关竹子的问题有关。我用来执行远程命令的 bamboo 插件在执行一些远程任务后出现 Broken transport; encountered EOF 错误。

您可以使用 -n 开关(供参考,ssh man page

防止内部 ssh 命令从 stdin 读取,从而防止外部 ssh 会话断开连接
vagrant ssh my_box -- -n "ls"