我在Linux Debian上运行虚拟机的虚拟机。 它位于隐藏的Truecrypt容器中。
我希望尽可能地减少该VM的存在。 因此,将VM导入虚拟框,在其GUI中留下一个条目 不是我想要的。 (我每次都可以手动删除它,但这很费力 并且在紧急情况下无法关闭。)
有没有办法用虚拟机启动虚拟机 使用.vbox文件的路径而不是导入文件,然后使用导入的VM的名称?
所以而不是:
vboxmanage startvm <Name_Of_VM_Here>
类似的东西:
vboxmanage startvm <Path_to_VMDK_file>
答案 0 :(得分:0)
您可以使用:
vboxmanage showhdinfo "PathToYourVMDK"
将在最后一行输出中显示其UUID。
然后,您可以使用UUID而不是其名称
启动该VMvboxmanage startvm YourUUID
所以,基本上你需要的命令是:
vboxmanage startvm $(vboxmanage showhdinfo "PathToYourVMDK" | awk -F" |)" '/^In use/{print $(NF-1)}')
如果您没有使用bash
,则需要使用这样的反引号替换$()
:
vboxmanage startvm `vboxmanage showhdinfo "PathToYourVMDK" | awk -F" |)" '/^In use/{print $(NF-1)}'`
<强>更新强>
如果您在编写脚本并调试脚本时遇到问题,请按照以下步骤操作。
首先......让基本showhdinfo
命令正常工作。所以试试这个:
vboxmanage showhdinfo "PathToYourVMDK"
UUID: c3166b8a-3c21-4531-927c-030f3cfb9728
Parent UUID: base
State: created
Type: normal (base)
Location: ...
Storage format: VDI
Format variant: fixed default
Capacity: 8192 MBytes
Size on disk: 8192 MBytes
In use by VMs: UbuntuVM (UUID: 77743eca-e338-471c-b824-60c5c5c22b6f) <-- THIS ONE
其次......现在看看最后一行,UUID可以与vboxmanage startvm
一起使用,所以请尝试复制并粘贴它:
vboxmanage startvm 77743eca-e338-471c-b824-60c5c5c22b6f
那应该启动VM。
第三......下一次检查是awk
正在正确提取该UUID,所以让我们尝试一下
vboxmanage showhdinfo "PathToYourVMDK" | awk -F" |)" '/^In use/{print $(NF-1)}'
77743eca-e338-471c-b824-60c5c5c22b6f
看起来是正确的,现在将它全部放入脚本中:
#!/bin/bash -xv
UUID=$(vboxmanage showhdinfo "PathToYourVMDK" | awk -F" |)" '/^In use/{print $(NF-1)}')
echo UUID:$UUID
vboxmanage startvm $UUID