Команда 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 версия не нуждается в