Можно ли реализовать волшебный пакет wake-on-lan в bash? Я использую старый, настроенный BusyBox и не имею ether-wake
. Можно ли заменить его какой-нибудь другой командой оболочки, например:
wakeonlan 11:22:33:44:55:66
busybox
wake-on-lan
michelemarcon
источник
источник
python
посмотрите code.activestate.com/recipes/358449-wake-on-lan и добавьтеalias
это в свой.bashrc
Ответы:
Вам нужно что-то, что способно отправить пакет Ethernet, который будет виден на устройстве, которое вы хотите активировать.
Команда
ether-wake
в BusyBox - это именно то, что вам нужно. Если ваш BusyBox не имеет его, попробуйте перекомпилировать BusyBox, чтобы включить его.Если у вас достаточно «вздутый» netcat (BusyBox может иметь одну из двух
nc
реализаций, одна из которых обрабатывает только TCP), вы можете отправить созданный вручную UDP-пакет на широковещательный адрес сегмента сети, к которому подключено устройство.Еще одна утилита BusyBox, которую вы можете использовать для отправки этого пакета
syslogd
.Если MAC содержит нулевой байт, вы не сможете создать пакет так легко. Выберите байт, которого нет
\xff
и которого нет в MAC, скажем\x42
(B
), и передайте по каналуtr
.Если у вас действительно есть bash (что крайне необычно для устройств с BusyBox - вы уверены, что у вас действительно есть bash, а не другая оболочка, предоставленная BusyBox?), Он может отправлять UDP-пакеты путем перенаправления на
/dev/udp/$hostname/$port
.источник
/dev/udp
распознается bash и на самом деле не существует в файловой системе, так что попробуйте.Я думаю, что вы можете использовать
syslogd
без-l
выключателя, пока он поддерживает-R
.У меня есть busybox
syslogd
withount-R
, нетnc
ни,bash
и я все еще застрял.источник
У меня есть SSH-сервер, работающий на старой мечте HTC. Моя версия busybox также не включала ether-wake, и я не достаточно опытен, чтобы скомпилировать свой собственный busybox. К счастью, мне удалось разбудить мой компьютер, используя:
Обратите внимание, что широковещательный IP отличается в моей сети.
Я создал файл (mac2.txt), содержащий магический пакет на моем ПК, и отправил его на сервер через SFTP. Поскольку мой mac имеет нулевой байт, я должен использовать tr для замены всех байтов x42 на 00. Это работает как шарм.
источник