通过SSH连接到来宾计算机后继续执行shell脚本?

时间:2015-02-09 07:09:26

标签: bash shell virtualbox git-bash

我在Windows主机上使用Vagrant和VirtualBox设置了Ubuntu来宾框。我正在尝试编写一个shell脚本......

  1. vagrant up
  2. {li> vagrant ssh vagrant up完成后
  3. cd成功连接到来宾计算机后,成为客户机中的特定项目目录
  4. 现在我的vagrant_shell_script.sh文件包含以下内容:

    vagrant up && vagrant ssh && echo 'cd vagrant/rails_tutorial/sample_app'
    

    当我在Git Bash中执行它时,一切正常,包括通过SSH连接到来宾机,但是在成功连接之后,脚本似乎停止工作并且不执行最终的cd命令。我认为这是因为它不再能够通过特定的Bash实例直接与我的主机通信(如果我错了,请纠正我)。

    一旦SSH连接成功,有没有办法让它直接导航到目标目录?

    如果这是一个愚蠢的问题,请原谅我 - 对于bash脚本来说相对较新。

1 个答案:

答案 0 :(得分:3)

This solved it.这有点hacky,但正在运行

vagrant up && vagrant ssh -- -t 'cd /vagrant/rails_tutorial/sample_app; /bin/bash'让你进来。出于某种原因,如果你没有发射外壳,流浪汉会继续踢你。

vagrant ssh --允许您将命令传递到S​​SH客户端。这是流浪汉自己的效用。下一个标志-t是一个SSH标志,它允许SSH在将控制权交还给您之前执行某些命令。您将命令放在-t标志之后,但请确保以<last command> ; /bin/bash结束它,以便它为您启动一个shell,并且您不会被踢出。