ESXi bash script — для автоматического включения виртуальных машин если они выключены

Автор: | 06.11.2018

Скрипт выполняется через определенные промежутки  времени с помощью крона, и проверяет состояние виртуальной машины в случае если она выключена — то запускает ее.

1. Зайдите в консоль по SSH с root-правами.

2. Создайте файл с любым именем например auto-poweronvm.sh, который разместите на томе vmfs.

Откройте файл в редакторе:

~ #vi /vmfs/volumes/datastore1/poweronvm.sh

И поместите в него этот текст:

vmname="your vm name"
vmid=$(vim-cmd vmsvc/getallvms | grep "$vmname" | awk '{print $1}')
stat1=$(vim-cmd vmsvc/power.getstate "$vmid" | grep "off")
if [ "$stat1" == "Powered off" ]
then
vim-cmd vmsvc/power.on "$vmid"
fi

3. Замените «your vm name» на имя вашей виртуальной машины
4. Сохраните изменения и выйдите их текстового редактора (:wq).
5. Измените права на файл и сделайте его исполняемым, командой:

chmod 755 /vmfs/volumes/datastore1/poweronvm.sh

6. Добавьте в cron задание, которое будет выполнять этот скрипт каждый час (можете выбрать более удобный для вас промежуток).

1. Отредактируйте /var/spool/cron/crontabs/root используя VI.
2. Добавьте эту строку в конец файла и сохраните изменения (:wq!)
0    */5    *    *    *     /vmfs/volumes/datastore1/poweronvm.sh
3. Выполните команду: cat /var/run/crond.pid
4. Выводом команды будет номер процесса,  для примера пусть это будет 1223
5. Выполните команду: kill 1223
1223 — замените на свой номер процесса.

Важно! Все выше приведенное будет работать только до перезагрузки ESXi, что бы изменения стали постоянными проделайте следующее:

Нужно добавить команды в  /etc/rc.local.d/local.sh они будут выполнятся каждый раз при перезагрузке ESX/ESXi
1. Отредактируйте /etc/rc.local.d/local.sh, например можете использовать такую команду: vi /etc/rc.local.d/local.sh
2. Найдите в файле строку «exit 0», и выше нее (над ней) добавьте три строчки:

/bin/kill $(cat /var/run/crond.pid)
/bin/echo '0    */5    *    *    *    /vmfs/volumes/datastore1/poweronvm.sh' >> /var/spool/cron/crontabs/root
crond

4. Выполните команду «auto-backup.sh» что бы изменения в файле /etc/rc.local.d/local.sh сохранились при перезагрузке.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.