Генератор команд отправки магического пакета в Linux
Создайте команду для bash или zsh, которая отправит магический пакет Wake on LAN из Linux. Используются Python 3, Perl или bash /dev/udp, поэтому устанавливать wakeonlan или etherwake не нужно.
Ввод
Вывод
Документация
Что такое магический пакет Wake on LAN?
Wake on LAN включает спящий или выключенный компьютер по сети. Сетевая карта компьютера остаётся включённой и ожидает магический пакет: 6 байтов FF, за которыми 16 раз повторяется MAC-адрес компьютера, всего 102 байта. Обычно пакет отправляется как широковещательная UDP-рассылка на порт 9 или 7, поэтому его получают все устройства в локальной сети, но просыпается только устройство с совпадающим адресом. Сначала Wake on LAN нужно включить в настройках BIOS или UEFI компьютера.
Пакет отправляют такие инструменты, как wakeonlan и etherwake, но они установлены не всегда, а на сервер или NAS их может быть нежелательно добавлять.
Описание инструмента
Этот инструмент формирует однострочную команду, которая отправляет пакет с помощью уже имеющихся в Linux средств. Введите MAC-адрес компьютера, который нужно разбудить, в формате 00:11:22:AA:BB:CC, 00-11-22-AA-BB-CC, 0011.22AA.BBCC или в виде 12 идущих подряд шестнадцатеричных цифр, а затем выберите способ отправки в поле «Отправить с помощью»:
- Python 3 или Perl — работают в bash и zsh, не требуют root-доступа и поддерживают широковещательную рассылку
- Bash /dev/udp — не требует установки дополнительных компонентов, но работает только в bash, не в zsh, и не поддерживает широковещательную рассылку
По умолчанию для широковещательного или IP-адреса используется 255.255.255.255, а для UDP-порта — 9. Если bash отправляет пакет на широковещательный адрес, Linux отвечает сообщением «Доступ запрещён». Поэтому инструмент предупредит вас, если вы выберете Bash и укажете адрес, оканчивающийся на .255. Вместо него укажите IP-адрес самого компьютера.
Команда формируется в браузере. Скопируйте её и выполните на любом компьютере с Linux в той же сети.
Примеры
Для адреса 00:11:22:AA:BB:CC, широковещательная отправка через Python 3 на порт 9:
python3 -c 'import socket;s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM);s.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1);s.sendto(bytes.fromhex("ff"*6+"001122aabbcc"*16),("255.255.255.255",9))'Bash, прямая отправка на компьютер с адресом 192.168.1.20:
printf "$(printf '\\xff%.0s' {1..6})$(printf '\\x00\\x11\\x22\\xaa\\xbb\\xcc%.0s' {1..16})" > /dev/udp/192.168.1.20/9Возможности
- Варианты команды для Python 3, Perl и bash
- Поддержка MAC-адресов с двоеточиями, дефисами, точками или без разделителей
- Предупреждение, если вариант для bash не может отправить пакет на широковещательный адрес