使用Vagrant获取当前的VirtualBox状态

时间:2012-07-24 11:53:10

标签: virtualbox status vagrant

最近几天我们做了很多Vagrant的东西,我们遇到了一个问题/没有找到任何答案。它是关于使用Vagrant检查VirtualBox的状态,例如:

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

如果有任何简单的方法来检查/获取当前Virtual Box状态,请告知我们。

6 个答案:

答案 0 :(得分:8)

如果要使用shell脚本检查运行状态。在项目文件夹中尝试此代码

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

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

答案 1 :(得分:2)

您可以使用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

答案 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