我想写一个命令ssh into vagrant,更改当前的工作目录,然后运行nosetests。
我在流浪汉的文档中发现可以使用vagrant ssh -c COMMAND
http://docs.vagrantup.com/v2/cli/ssh.html
问题是如果我通过-c运行nose或者在SSH之后手动运行,我会得到不同的结果。
命令:
vagrant ssh -c 'pwd && cd core && pwd && nosetests -x --failed' web
输出:
/web
/web/core
----------------------------------------------------------------------
Ran 0 tests in 4.784s
OK
Connection to 127.0.0.1 closed.
命令:
vagrant ssh web
/web$ pwd && cd core && pwd && nosetests -x --failed
输出
/web
/web/core
.........................................................
.........................................................
.........................................................
.........................................................
<snip>
...............................
---------------------------------------------------------
Ran 1399 tests in 180.325s
我不明白为什么会有所作为。
答案 0 :(得分:1)
第一个ssh会话不是终端会话。如果您尝试使用ssh -t
代替vagrant ssh -c
,则输出可能会相同。如下所示的命令应该提供与本地获得的输出相当的输出:
ssh -t <username>@<ip-of-vagrant-machine> -p <vagrant-vm-ssh-port> 'pwd && cd core && pwd && nosetests -x --failed'
流浪汉机器上的用户名和密码的默认值都是“vagrant”,在使用vagrant up
设置流浪汉机器时会显示ssh-port和ssh into的IP。如果您更喜欢公钥ssh login vagrant也可以指向ssh公钥的位置。
根据您在vm上运行鼻子的位置,您必须调整上面的cd
命令,似乎vagrant ssh包装器会自动将您移动到VM上的/web
。
如果您只是担心测试的结果因视觉差异会有所不同:不,他们不应该,原因只是在非交互式终端上鼻子以不同的方式显示结果。 / p>
答案 1 :(得分:0)
我可以通过运行来解决此问题:
vagrant ssh -c 'cd core && nosetests -x --failed --exe' web
我不确定为什么这会对我的盒子造成影响。