Команда Bash one-line для отправки wake on LAN magic packet без специального инструмента
можно ли подделать wake on LAN magic packet и отправить его в однострочный bash?
конечно, я знаю, что есть конкретные инструменты для этого, которые решают проблему в одной строке, но было бы полезно знать минимальные требования к ковке WOL. Это: как бороться с wake on LAN без специальных инструментов.
1 ответов
на минимальные требования я могу думать выкл:
- Баш поддержка расширения скобки (я думаю, что это v3.5.Пункт 1 и выше).
- на sed (1).
- С netcat.
предположим:
- пакет WOL для LAN, вещание до 255.255.255.255.
на командная строка будет быть:
echo -e $(echo $(printf 'f%.0s' {1..12}; printf "$(echo $MAC | sed 's/://g')%.0s" {1..16}) | sed -e 's/../\x&/g') | nc -w1 -u -b 255.255.255.255 4000
заменить $MAC
по назначению MAC. Или, на этот раз в двухстрочном: -) команда:
MAC=11:22:33:44:55:66
echo -e $(echo $(printf 'f%.0s' {1..12}; printf "$(echo $MAC | sed 's/://g')%.0s" {1..16}) | sed -e 's/../\x&/g') | nc -w1 -u -b 255.255.255.255 4000
Итак, в более общей нотации:
MAC=11:22:33:44:55:66
Broadcast=255.255.255.255
PortNumber=4000
echo -e $(echo $(printf 'f%.0s' {1..12}; printf "$(echo $MAC | sed 's/://g')%.0s" {1..16}) | sed -e 's/../\x&/g') | nc -w1 -u -b $Broadcast $PortNumber
объяснениями:
- The WOL волшебный пакет состоит of
ffffffffffff
(12 разf
) с последующим 16 раз назначения MAC без двоеточий (:
). - на здесь удалить двоеточие (
:
) от MAC и добавить\x
Хекс спецификатор (так что11
становится\x11
,22
становится\x22
... и так далее) перед отправкой строки в сетевой стек. - поддельный пакет wake on LAN отправляется в сетевой стек трубопровод его к NetCat. SoCat можно использовать вместо этого (синтаксис будет отличаться, конечно).
проверен работающего на Ubuntu, Кали и даже CygWin (Windows 7 SP 1 64 бит).
принять к сведению:
- Cygwin'S NetCat версия не нуждается в