У меня есть хост VMware ESXi 6, на котором работает несколько гостей. Существует хранилище данных с файлом ISO, которое используется одним или несколькими из этих клиентов. Я получаю доступ к хосту ESXi через ssh из linux, поэтому PowerCLI мне не подходит.
Q1: Как я могу с помощью VMware CLI узнать, на каких гостях смонтирован этот ISO-файл?
Q2: Как я могу, узнав об этом, отключить этот ISO-файл от этих гостей, а также от VMware CLI?
Я ожидаю, что это будет vim-cmd vmsvc
подкоманды, но я не смог их найти.
Быстрое и грубое решение для оболочки через SSH - написать небольшой скрипт, который соединяет несколько действий:
vim-cmd vmsvc/getallvms|awk '{print $1}'|grep -o -E '[0-9]+'
(перечислить все виртуальные машины, показать только первый столбец с awk, отфильтровать IP-адреса и текст и пустые строки с помощью grep)ash
не имеет массивов вроде bash
) и проверьте для каждого номера / идентификатора, найдено ли одно вхождение выбранного вами имени ISO в списке устройств для каждой виртуальной машины: vim-cmd vmsvc/device.getdevices yourVmId|grep -o -A 12 -E 'yourImageName.iso' | grep -c 'connected = true'
(перечислите все устройства, найдите область вокруг вашего файла ISO, проверьте, смонтирован ли / активен ли ISO)vim-cmd vmsvc/device.getdevices yourVmId|grep -o -B 4 -E 'yourImageName.iso'|grep -o -E 'key = [0-9]+'|grep -o -E '[0-9]+'
(требуется двойной grep из-за отсутствия параметра группы -P
)vim-cmd vmsvc/device.connection yourVmId yourDeviceId disconnect
отключить устройство. (Изменить: кажется, что это не совсем правильно, это что-то делает, но не то, что я ожидал. Я обновлю, когда у меня будет время, чтобы исследовать это дальше)Единственная проблема, с которой я столкнулся, заключается в том, что сообщение «CD-привод заблокирован гостем» может появиться в клиенте VSphere при выполнении последнего шага, но, возможно, это можно вообще отключить.
Или просто сделайте это вручную для «нескольких» виртуальных машин.
Или, в первую очередь, избежать ситуации, размонтируя устройство после установки.