使用Vagrant获取当前的VirtualBox状态

问题描述 投票:4回答:6

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

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

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

virtualbox status vagrant
6个回答
9
投票

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

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

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


2
投票

您可以使用egrep获取当前状态(其他答案检查某些状态,而这种方法允许您在scrips中使用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

1
投票

或者使用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

-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添加到任何命令以使其更容易解析。此功能被认为是实验性的,因为版本之间的格式可能会发生变化,因此请谨慎使用


-2
投票

我不确定你是否想要在Vagrantfile中这样做,但在它之外你可以发出命令vagrant status BOX_NAME并获得框的状态。您将获得以下格式的文本:

Current VM states:
box2                     running

-2
投票

将目录更改为VM的位置:cd d:/vagant_boxes

跑:vagrant status

© www.soinside.com 2019 - 2024. All rights reserved.