Bash
VBox 機器列表?
我正在編寫一個 bash 腳本來列出我主機上的虛擬機,所以我可以確保它們在主機重新啟動時被啟動。
我的問題是獲取我需要為其執行此操作的機器列表。
我的完整清單是:
"GYO DB Clone" {1f6e2518-ed20-4d71-a974-1d4823db4a81} "GYO LB Clone" {6ba9a751-91ed-40a4-8a90-385559f67885} "GYO MC Clone" {8bd0d243-887f-49dd-966f-6c104e451277} "GYO Web Clone" {1229d75d-f046-4f3e-b15a-2d6c91b1e0d4} "GYO DB 1" {5274eb5f-d0fe-46dd-8aaf-6d23728790b1} "GYO LB 1" {5da93ec0-2f24-47f5-936b-390f4aacae8f} "GYO MC 1" {3914335a-8199-4d2b-861d-09b8dfd8ea19} "GYO MC 2" {b8ae5638-2e4a-4b8c-aec4-9cdf8b830e7f} "GYO Web 1" {9e67266f-17ae-4de9-8445-8e4a06dd9ab7} "GYO Web 2" {645453ba-8bfb-42af-8830-143ca10a655e} "GYO Web 3" {8851950f-7671-434b-805a-7035d126f471} "GYO Web 4" {03d74380-3a61-486f-a61f-bc9212b081a2}
現在,我需要他們全部啟動…除了
clones
我目前
code
得到的名單是:sudo -H -u $VMUSER VBoxManage list vms | tr -s '\" {' '%{' | cut -d '%' -f3 | while read uuid; do echo "$uuid"; done
得到我
$uuid
應該的,但現在我怎樣才能修改它來排除clones
?我需要這樣做的原因應該有點明顯,但萬一不是;這是因為我不知道在主機重新啟動時需要啟動多少個虛擬機。我顯然會根據需要添加/刪除虛擬機
如果
sudo -H -u $VMUSER VBoxManage list vms
返回這個:"GYO DB Clone" {1f6e2518-ed20-4d71-a974-1d4823db4a81} "GYO LB Clone" {6ba9a751-91ed-40a4-8a90-385559f67885} "GYO MC Clone" {8bd0d243-887f-49dd-966f-6c104e451277} "GYO Web Clone" {1229d75d-f046-4f3e-b15a-2d6c91b1e0d4} "GYO DB 1" {5274eb5f-d0fe-46dd-8aaf-6d23728790b1} "GYO LB 1" {5da93ec0-2f24-47f5-936b-390f4aacae8f} "GYO MC 1" {3914335a-8199-4d2b-861d-09b8dfd8ea19} "GYO MC 2" {b8ae5638-2e4a-4b8c-aec4-9cdf8b830e7f} "GYO Web 1" {9e67266f-17ae-4de9-8445-8e4a06dd9ab7} "GYO Web 2" {645453ba-8bfb-42af-8830-143ca10a655e} "GYO Web 3" {8851950f-7671-434b-805a-7035d126f471} "GYO Web 4" {03d74380-3a61-486f-a61f-bc9212b081a2}
您需要做的就是過濾掉任何匹配的行
Clone
。有很多方法可以做到這一點。這是使用的一種方法awk
:$ sudo -H -u $VMUSER VBoxManage list vms | awk -F'[{}]' '!/Clone/{print $2}' 5274eb5f-d0fe-46dd-8aaf-6d23728790b1 5da93ec0-2f24-47f5-936b-390f4aacae8f 3914335a-8199-4d2b-861d-09b8dfd8ea19 b8ae5638-2e4a-4b8c-aec4-9cdf8b830e7f 9e67266f-17ae-4de9-8445-8e4a06dd9ab7 645453ba-8bfb-42af-8830-143ca10a655e 8851950f-7671-434b-805a-7035d126f471 03d74380-3a61-486f-a61f-bc9212b081a2
將欄位分隔符設置為由和
-F[{}]
組成的字元類。因此,第二個欄位將是機器的 ID。然後腳本在不匹配的行上列印第二個欄位 ( ) ( )。{``}``$2``CLone``!/Clone/