Um rápido & solução bruta no shell via SSH seria escrever um pequeno script que conecta várias ações:
- Obtenha seus IDs de VM com
vim-cmd vmsvc/getallvms|awk '{print $1}'|grep -o -E '[0-9]+'
(liste todas as VMs, mostre apenas a primeira coluna com awk, filtre IPs e texto e linhas vazias com grep) - Iterar sobre as linhas (
ash
não tem matrizes comobash
) e verificar cada número / ID se uma ocorrência do nome ISO escolhido for encontrada na listagem de dispositivos de cada VM:vim-cmd vmsvc/device.getdevices yourVmId|grep -o -A 12 -E 'yourImageName.iso' | grep -c 'connected = true'
(list todos os dispositivos, obtenha a área em torno de seu arquivo ISO, verifique se o ISO está atualmente montado / ativo) - Obtenha o ID do dispositivo de cada unidade de CD (supondo que seja apenas uma, altere o código para várias unidades em uma única máquina) com um grep modificado da mesma listagem inicial:
vim-cmd vmsvc/device.getdevices yourVmId|grep -o -B 4 -E 'yourImageName.iso'|grep -o -E 'key = [0-9]+'|grep -o -E '[0-9]+'
(o grep duplo é necessário devido à falta opção de grupo-P
) - Use
vim-cmd vmsvc/device.connection yourVmId yourDeviceId disconnect
para desconectar o dispositivo. (Edit: Parece que isso não é totalmente correto, faz alguma coisa, mas não o que eu esperaria. Eu vou atualizar quando eu tiver tempo para investigar isso ainda mais)
O único problema que encontrei é que a mensagem "Unidade de CD bloqueada por convidado" pode aparecer no cliente VSphere ao fazer a última etapa, mas talvez isso possa ser desativado em geral.