Вам нужно что-то, что это способно к отправке пакета Ethernet, который будет замечен устройством, которое Вы хотите разбудить.
ether-wake
команда в BusyBox точно, что Вы после. Если Ваш BusyBox не имеет его, считайте перекомпиляцию BusyBox для включения его.
Если Вы имеете достаточно “bloaty” netcat (BusyBox может иметь один из два nc
реализации, одна из которых обрабатывает только TCP), можно отправить вручную обработанный пакет UDP в широковещательный адрес сегмента сети, с которым подключено устройство.
mac=$(printf '\xed\xcb\xa9\x87\x65\x43') # MAC = ed:cb:a9:87:65:43
wol_packet=$(printf "\xff\xff\xff\xff\xff\xff$mac$mac$mac$mac$mac$mac$mac$mac$mac$mac$mac$mac$mac$mac$mac$mac")
echo "$wol_packet" | nc -u 7 192.0.2.255
Другая утилита BusyBox, которую Вы могли злоупотребить в отправку того пакета, syslogd
.
syslogd -n -O /dev/null -l 0 -R 192.0.2.255/7 &
syslogd_pid=$!
logger "$wol_packet"
kill $!
Если MAC будет содержать пустой байт, то Вы не сможете обработать пакет так легко. Выберите байт, который это не \xff
и это не находится в MAC, сказать \x42
(B
), и канал через tr
.
echo "$wol_packet" | tr B '\000' | nc -u 7 192.0.2.255
Если у Вас действительно есть удар (который чрезвычайно необычен на устройствах с BusyBox — действительно ли Вы уверены, что у Вас действительно есть удар и не другая оболочка, обеспеченная BusyBox?), это может отправить пакеты UDP путем перенаправления к /dev/udp/$hostname/$port
.
echo "$wol_packet" >/dev/udp/192.0.2.255/7
Необходимо работать mkswap
на том устройстве:
# mkswap /dev/VolGroup/lv_swap
Изменение размеров устройства, отдельно, не повторно подготовит устройство к свопингу.