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