Shell 脚本:我如何通过 virtualbox 的 cli 列出虚拟机并删除除“SaveThisOne”之外的所有虚拟机?
注意:以下行将删除所有 virtualbox 虚拟机:
VBoxManage list runningvms | awk '{print $2;}' | xargs -I vmid VBoxManage controlvm vmid poweroff
VBoxManage list vms | awk '{print $2;}' | xargs -I vmid VBoxManage unregistervm --delete vmid
我认为
vmboxmanage list vms
的输出看起来像这样:
"SaveThisOne" {asdgfdasg}
"DeleteThis" {asdfasdfasdg}
"AndThis" {gasdfas}
"AndThisToo" {asdfas}
这是一个例子:
#!/bin/bash
# list all VMs
vms=$(vboxmanage list vms)
# Check every vm
while read -r line; do
# Get VM name
vm_name=$(echo "$line" | awk -F'"' '{print $2}')
echo $vm_name
# check name and delete
if [ "$vm_name" != "SaveThisOne" ]; then
# delete if name not like
vboxmanage unregistervm "$vm_name" --delete
fi
done <<< "$vms"
我认为应该可以完成这项工作,但我还没有测试过,所以要小心