最近几天我们做了很多关于Vagrant的东西,我们遇到了一个问题/没有找到任何答案。它是关于使用Vagrant检查VirtualBox的状态,例如:
if config.vmbox_status == 'running'
# do this stuff
end
如果有任何简单的方法来检查/获取当前的Virtual Box状态,请告诉我们。
如果要使用shell脚本检查运行状态。在项目文件夹中尝试此代码
vagrant status --machine-readable | grep state,running
然后检查输出字符串或退出代码
您可以使用egrep
获取当前状态(其他答案检查某些状态,而这种方法允许您在scrips中使用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
或者使用awk获取VM的当前状态:
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
从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
添加到任何命令以使其更容易解析。此功能被认为是实验性的,因为版本之间的格式可能会发生变化,因此请谨慎使用
我不确定你是否想要在Vagrantfile中这样做,但在它之外你可以发出命令vagrant status BOX_NAME
并获得框的状态。您将获得以下格式的文本:
Current VM states:
box2 running
将目录更改为VM的位置:cd d:/vagant_boxes
跑:vagrant status