我想写一个命令ssh到vagrant中,更改当前的工作目录,然后运行nosetests。
我在vagrant的文档中发现,这可以用vagrant ssh -c COMMAND来完成
http://docs.vagrantup.com/v2/cli/ssh.html
问题是,如果我通过-c或在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我不明白这有什么不同。
发布于 2015-09-24 23:00:42
第一个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 ",ssh要进入的ssh端口和IP是在配置带有vagrant up的vagrant机器时显示的。如果您喜欢使用公钥,ssh login vagrant也可以将您指向ssh公钥的位置。
根据您想要在VM上运行鼻子的位置,您必须调整上面的cd命令,看起来vagrant ssh包装器自动将您移动到vm上的/web。
如果你只是担心测试结果是否会因为视觉差异而不同:不,不应该,原因只是在非交互式终端上以不同的方式显示结果。
发布于 2015-10-03 05:49:29
我能够通过运行以下命令来解决这个问题:
vagrant ssh -c 'cd core && nosetests -x --failed --exe' web
我不知道为什么这对我的盒子有影响。
https://stackoverflow.com/questions/30792519
复制相似问题