6

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

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

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

4

5 回答 5

13

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

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

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

于 2015-04-22T08:12:34.933 回答
4

您可以使用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
于 2017-04-17T13:17:15.743 回答
0

或者使用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
于 2019-01-10T08:50:55.397 回答
-2

我不确定您是否一定要在 Vagrantfile 中执行此操作,但在它之外您可以触发命令vagrant status BOX_NAME并获取框的状态。您将获得以下格式的文本:

Current VM states:
box2                     running
于 2012-09-25T21:18:17.243 回答
-3

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

跑:vagrant status

于 2015-07-24T08:25:32.410 回答