远程脚本在 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"
我在远程服务器上配置了 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)
vagrant ssh my_box -- -n "ls"