【问题标题】:Get current VirtualBox Status with Vagrant使用 Vagrant 获取当前 VirtualBox 状态
【发布时间】:2012-07-24 11:53:10
【问题描述】:

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

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

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

【问题讨论】:

    标签: virtualbox status vagrant


    【解决方案1】:

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

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

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

    【讨论】:

    • 这对我有用,如果状态正在运行,退出代码为 0,否则为 1,因此可以在我检查状态的脚本中使用。
    • --machine-readable 在当前的 Vagrant 版本中似乎不可用
    • @AdN 您使用哪个流浪版本?根据official document vagrant version >= 1.4 时应该有这个参数
    • 我的错,它确实存在!噪音+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
    

    【讨论】:

    • ([a-z]*) 后面加下划线,例如([a-z_]*) 这样not_created 不会产生VM_STATUS = created
    【解决方案3】:

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

    Current VM states:
    box2                     running
    

    【讨论】:

    • 嗯,它在 Vagrantfile 文件夹之外对我不起作用。它说:$ vagrant status box_1-lucid64 A Vagrant environment is required to run this command. Run 'vagrant init' to set one up.
    • @WojciechBednarski 截至 2014 年 5 月,如果您仍然需要此功能,现在可以使用它。看我的回答。
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

      运行:vagrant status

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-02
        • 2016-08-11
        • 1970-01-01
        相关资源
        最近更新 更多