最近几天我们做了很多Vagrant的东西,我们遇到了一个问题/没有找到任何答案。它是关于使用Vagrant检查VirtualBox的状态,例如:
if config.vmbox_status == 'running'
# do this stuff
end
如果有任何简单的方法来检查/获取当前Virtual Box状态,请告知我们。
答案 0 :(得分:8)
如果要使用shell脚本检查运行状态。在项目文件夹中尝试此代码
vagrant status --machine-readable | grep state,running
然后检查输出字符串或退出代码
答案 1 :(得分:2)
您可以使用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
答案 2 :(得分:1)
或使用 awk 获取虚拟机的当前状态:
VM_STATUS=`vagrant status --machine-readable | grep ",state," | awk -F, '{print $4}'`
case "${VM_STATUS}" in
running)
echo "RUNNING"
;;
poweroff)
echo "POWEROFF"
;;
*)
echo "Unhandled: ${VM_STATUS}"
;;
esac
答案 3 :(得分:-1)
从Vagrant 1.6开始,您可以查看
PROJECT/.vagrant/machines/default/virtualbox/index_uuid
(如果您的Vagrantfile中有多台计算机,请修改此路径以找到所需的计算机。)
获取VM的ID,然后运行
vagrant status ID_NUMBER
您还可以运行vagrant global-status
以查看有关此计算机上所有Vagrant VM的信息。
Vagrant还有实验支持将--machine-readable
添加到任何命令以使其更容易解析。此功能被认为是实验性的,因为格式可能会在不同版本之间发生变化,因此请谨慎使用。
答案 4 :(得分:-2)
我不确定你是否想要在Vagrantfile中这样做,但在它之外你可以发出命令vagrant status BOX_NAME
并获得框的状态。您将获得以下格式的文本:
Current VM states:
box2 running
答案 5 :(得分:-2)
将目录更改为VM的位置:cd d:/vagant_boxes
运行:vagrant status