BusyBoxを使用してWake on LANを使用しますか?

BusyBoxを使用してWake on LANを使用しますか?

BashでWake on LANマジックパッケージを実装できますか?以前のカスタムBusyBoxを使用していますが、次のような他のether-wakeシェルコマンドで置き換えることはできますか?

wakeonlan 11:22:33:44:55:66

ベストアンサー1

覚醒したいデバイスに見えるイーサネットパケットを送信できることが必要です。

BusyBoxのコマンドはether-wakeあなたに必要なものです。 BusyBoxにこのエントリがない場合は、BusyBoxを再コンパイルして含めることをお勧めします。

十分に「膨大な」netcatがある場合(BusyBoxは2つの実装のncうちの1つを持つことができ、そのうちの1つは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にないバイトを選択してパイプします。\x42Btr

echo "$wol_packet" | tr B '\000' | nc -u 7 192.0.2.255

bashがある場合(BusyBoxがあるデバイスでは非常にまれです。実際にBusyBoxが提供する他のシェルではなくbashはありますか?)にリダイレクトしてアクセスできます/dev/udp/$hostname/$port

echo "$wol_packet" >/dev/udp/192.0.2.255/7

おすすめ記事