我们在近几天做了很多流浪汉的东西,而且我们遇到了一个问题/没有找到任何答案。这是关于检查与流浪VirtualBox的地位,例如:获得当前VirtualBox状态与流浪
if config.vmbox_status == 'running'
# do this stuff
end
如果检查/获取当前的虚拟盒的状态,让我们知道有什么简单的方法。
我们在近几天做了很多流浪汉的东西,而且我们遇到了一个问题/没有找到任何答案。这是关于检查与流浪VirtualBox的地位,例如:获得当前VirtualBox状态与流浪
if config.vmbox_status == 'running'
# do this stuff
end
如果检查/获取当前的虚拟盒的状态,让我们知道有什么简单的方法。
我不知道你是否想在Vagrantfile内做到这一点,但它必须在它之外,你可以发出命令vagrant status BOX_NAME
并获得框的状态。您将获得文本格式如下:
Current VM states:
box2 running
由于流浪1.6的,你可以看看在
PROJECT/.vagrant/machines/default/virtualbox/index_uuid
(如果你的Vagrantfile中有多个机器上,修改此路径找到你想要的。)
让虚拟机的ID,然后运行
vagrant status ID_NUMBER
您还可以运行vagrant global-status
以查看有关此计算机上所有Vagrant VM的信息。
流浪汉也有增加--machine-readable
任何命令,使其更容易解析实验支持。此功能被认为是实验性的,因为格式可能会在版本之间发生变化,所以请谨慎使用。
如果你想用shell脚本检查运行状态。试试你的项目文件夹内的代码
vagrant status --machine-readable | grep state,running
然后检查输出字符串或退出代码
这适用于我,如果状态正在运行,则退出代码为0,否则为1,因此可用于检查状态的脚本中。 – 2016-03-31 10:08:12
目录更改虚拟机的位置:cd d:/vagant_boxes
运行:vagrant status
您可以使用egrep
获得当前状态(其他答案检查某些状态,而此方法允许您在脚本中使用case
或if
,就像那样(丑陋而不是子弹)证明!):
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
将下划线加入'([a-z] *)',例如'([a-z _] *)'这样'not_created'不会产生'VM_STATUS = created'。 – 2017-07-24 11:06:41
嗯,它不适用于我以外的文件夹与Vagrantfile。它说:'$ vagrant status box_1-lucid64 运行这个命令需要一个Vagrant环境。运行'vagrant init' 设置一个。' – 2012-12-30 02:54:08
@WojciechBednarski截至2014年5月,如果您仍然需要它,现在可以使用此功能。看到我的答案。 – 2014-06-12 16:08:37