ChatGPT:wake-on-lan-nas
Вопрос для ChatGPT:
У меня есть NAS сервер, регулярно бывают отключения электричества. Хочу разработать серию скриптов, которые будут отслеживать эту ситуацию и при пропадании электричества автоматом выключать NAS и при появлении электричества его пробуждать.
Как воспользоваться "Wake on LAN" через python?
Ответ ChatGPT:
Для использования функции "Wake on LAN" (WOL) через </ode>Python, вам потребуется отправить специальный "магический пакет" на сетевой адрес устройства, которое вы хотите разбудить. Вот пример, как это можно сделать с помощью библиотеки socket:
- Убедитесь, что у вас установлен
Python. - Установите библиотеку
wakeonlan, если вы хотите использовать более удобный способ. Для этого выполните команду:
pip install wakeonlan
- Используйте следующий код для отправки магического пакета:
from wakeonlan import send_magic_packet
# Укажите MAC-адрес устройства, которое хотите разбудить
mac_address = '00:11:22:33:44:55'
# Отправка магического пакета
send_magic_packet(mac_address)
Если вы хотите написать код без использования сторонних библиотек, вот простой пример:
import socket
def wake_on_lan(macaddress):
# Преобразуем MAC-адрес в нужный формат
macaddress = macaddress.replace(':', '').replace('-', '')
if len(macaddress) != 12:
raise ValueError("Неверный формат MAC-адреса")
# Создаем магический пакет
magic_packet = bytes.fromhex('FF' * 6) + bytes.fromhex(macaddress) * 16
# Отправляем пакет по широковещательному адресу
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as sock:
sock.sendto(magic_packet, ('255.255.255.255', 9))
# Укажите MAC-адрес устройства, которое хотите разбудить
mac_address = '00:11:22:33:44:55'
wake_on_lan(mac_address)
Примечания:
Убедитесь, что функция Wake on LAN включена в BIOS/UEFI вашего устройства. Убедитесь, что ваше устройство подключено к сети и настроено на прием WOL-пакетов. Если вы используете роутер, возможно, вам нужно будет настроить проброс портов для UDP на порт 9. Теперь вы можете использовать этот код для пробуждения устройств в вашей сети!
Статус реализации
<<ВПРОЦЕССЕ>>
(ожидает реализации доступа по SSH к роутеру)