2012-07-24 94 views
3

我们在近几天做了很多流浪汉的东西,而且我们遇到了一个问题/没有找到任何答案。这是关于检查与流浪VirtualBox的地位,例如:获得当前VirtualBox状态与流浪

if config.vmbox_status == 'running' 
    # do this stuff 
end 

如果检查/获取当前的虚拟盒的状态,让我们知道有什么简单的方法。

回答

-2

我不知道你是否想在Vagrantfile内做到这一点,但它必须在它之外,你可以发出命令vagrant status BOX_NAME并获得框的状态。您将获得文本格式如下:

Current VM states: 
box2      running 
+0

嗯,它不适用于我以外的文件夹与Vagrantfile。它说:'$ vagrant status box_1-lucid64 运行这个命令需要一个Vagrant环境。运行'vagrant init' 设置一个。' – 2012-12-30 02:54:08

+0

@WojciechBednarski截至2014年5月,如果您仍然需要它,现在可以使用此功能。看到我的答案。 – 2014-06-12 16:08:37

-1

由于流浪1.6的,你可以看看在

PROJECT/.vagrant/machines/default/virtualbox/index_uuid 

(如果你的Vagrantfile中有多个机器上,修改此路径找到你想要的。)

让虚拟机的ID,然后运行

vagrant status ID_NUMBER 

您还可以运行vagrant global-status以查看有关此计算机上所有Vagrant VM的信息。


流浪汉也有增加--machine-readable任何命令,使其更容易解析实验支持。此功能被认为是实验性的,因为格式可能会在版本之间发生变化,所以请谨慎使用。

7

如果你想用shell脚本检查运行状态。试试你的项目文件夹内的代码

vagrant status --machine-readable | grep state,running 

然后检查输出字符串或退出代码

+1

这适用于我,如果状态正在运行,则退出代码为0,否则为1,因此可用于检查状态的脚本中。 – 2016-03-31 10:08:12

-2

目录更改虚拟机的位置:cd d:/vagant_boxes

运行:vagrant status

1

您可以使用egrep获得当前状态(其他答案检查某些状态,而此方法允许您在脚本中使用caseif,就像那样(丑陋而不是子弹)证明!):

VM_STATUS=`vagrant status --machine-readable | grep ",state," | egrep -o '([a-z_]*)$'` 
case "${VM_STATUS}" in 
    running) 
    echo "RUNNING" 
    ;; 
    poweroff) 
    echo "POWEROFF" 
    ;; 
    *) 
    echo "Unhandled: ${VM_STATUS}" 
    ;; 
esac 
+0

将下划线加入'([a-z] *)',例如'([a-z _] *)'这样'not_created'不会产生'VM_STATUS = created'。 – 2017-07-24 11:06:41