Я пытаюсь написать сценарий оболочки для удаленного включения и выключения виртуальных машин на сервере esxi.Поскольку vmid не является статичным, я должен выделить имя хоста и затем использовать awk, чтобы получить только первый столбец.Следующая команда работает, как и ожидалось:
ssh 192.168.0.10 'VMID="$(vim-cmd vmsvc/getallvms | grep HPDesktop2 | awk "{print $1}" )"; vim-cmd vmsvc/power.off $VMID'
Я хотел бы получить список имен хостов в отдельном файле, выполнить цикл по этим именам хостов и запустить команду для каждого имени хоста.Я попробовал следующее:
while read ID; do
ssh 192.168.0.10 'VMID="$(vim-cmd vmsvc/getallvms | grep $ID | awk "{print $1}" )"; vim-cmd vmsvc/power.off $VMID'
done <Hostnames
Кажется, что переменная не передается, потому что я получаю инструкцию по использованию grep и следующую ошибку:
Использование: power.offvmid
Выключите указанную виртуальную машину.
Недостаточно аргументов.