Lista de máquinas VBox?

3

Estou escrevendo um script bash para listar as VM's no meu host, para que eu possa ter certeza de que elas serão ativadas quando a máquina host for reiniciada.

meu problema é obter a lista das máquinas para as quais preciso fazer isso.

Minha lista completa é:

"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}

Agora, preciso que todos sejam acionados ... exceto o clones

Meu atual code para obter a lista é:

sudo -H -u $VMUSER VBoxManage list vms | tr -s '\" {' '%{' | cut -d '%' -f3  | while read uuid; do
    echo "$uuid";
done

Obtém-me o $uuid como deveria, mas agora como posso modificá-lo para excluir o clones ?

E o motivo pelo qual eu preciso fazer isso deve ser um pouco óbvio, mas no caso não é; é porque eu não sei quantos vm precisarão ser acionados na reinicialização do host. Eu obviamente estarei adicionando / removendo vm's conforme as necessidades se apresentem

    
por Kevin 16.01.2016 / 16:40

1 resposta

7

Se sudo -H -u $VMUSER VBoxManage list vms retornar isso:

"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}

Tudo o que você precisa fazer é filtrar as linhas correspondentes a Clone . Existem muitas maneiras de fazer isso. Aqui está uma abordagem usando 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

O -F[{}] define o separador de campo como uma classe de caractere que consiste em { e } . Portanto, o segundo campo será o ID da máquina. O script imprime o segundo campo ( $2 ) nas linhas que não correspondem a CLone ( !/Clone/ ).

    
por 16.01.2016 / 17:30