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 (
ashnã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 disconnectpara 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.