Бывают случаи, когда требуется запустить ВМ в VMware vSphere, используя Wake on LAN (например, при использовании системы управления Microsoft SCCM).
Для решения этой проблемы я написал небольшой скрипт на PowerShell, который выполняет функцию Wake on Lan прокси сервера. После запуска скрипт подключается к указанному серверу vCenter и собирает информацию о всех доступных ВМ и MAC адресах виртуальных сетевых адаптеров. При получении magic packet'а, скрипт проверяет, не принадлежит ли MAC адрес виртуальному адаптеру одной из ВМ, и в случае совпадения выполняет запуск данной ВМ.
Скрипт доступен для загрузки по данной ссылке: https://drive.google.com/open?id=0B25p_5gdqA35ci12a21DYTVrUzQ
Для запуска скрипта требуется установленный на компьютере PowerShell и VMware PowerCLI (https://my.vmware.com/web/vmware/details?downloadGroup=PCLI550&productId=352).
В архиве два файла:
Перед запуском скрипта требуется изменить конфигурационный файл config.xml, указав в нем адрес сервера vCenter (параметр Server), учетную запись (User) и пароль (Password) для подключения.
Учетной записи пользователя, из-под которой производится подключение, требуются следующие права:
Параметр Interval определяет частоту обновления информации о ВМ и их MAC адресах (в минутах).
Параметр Port определяет на каком порту UDP скрипт получает magic packet'ы. По умолчанию, используется UDP порт 9, но для некоторых приложений может потребоваться его изменить на UDP 7.
Параметр Logmode отвечает за уровень логирования:
Параметр Logfolder указывает путь к папке, где будут храниться журналы.
Принцип работы Wake on LAN очень прост. Сервер посылает в широковещательном режиме специально сформированный пакет (Magic Packet), содержащий MAC адрес компьютера, который требуется включить. Сетевой адаптер, поддерживающий Wake on LAN, получив подобный пакет с собственным MAC адресом, запустит компьютера.
К сожалению, для виртуальных машин такая возможность не поддерживается, т.к. виртуальный сетевой адаптер может получать и обрабатывать трафик только, когда ВМ включена.
Для решения этой проблемы я написал небольшой скрипт на PowerShell, который выполняет функцию Wake on Lan прокси сервера. После запуска скрипт подключается к указанному серверу vCenter и собирает информацию о всех доступных ВМ и MAC адресах виртуальных сетевых адаптеров. При получении magic packet'а, скрипт проверяет, не принадлежит ли MAC адрес виртуальному адаптеру одной из ВМ, и в случае совпадения выполняет запуск данной ВМ.
Скрипт доступен для загрузки по данной ссылке: https://drive.google.com/open?id=0B25p_5gdqA35ci12a21DYTVrUzQ
Для запуска скрипта требуется установленный на компьютере PowerShell и VMware PowerCLI (https://my.vmware.com/web/vmware/details?downloadGroup=PCLI550&productId=352).
В архиве два файла:
- wol-procy.ps1 - сам скрипт
- config.xml - конфигурационный файл
Учетной записи пользователя, из-под которой производится подключение, требуются следующие права:
- Virtual machine > Interaction > Power on
Параметр Port определяет на каком порту UDP скрипт получает magic packet'ы. По умолчанию, используется UDP порт 9, но для некоторых приложений может потребоваться его изменить на UDP 7.
Параметр Logmode отвечает за уровень логирования:
- 1 - Запись журналов в файл.
- 2 - Вывод журналов на экран.
- 3 - Вывод на экран и запись в файл.