BusyBoxを使用したWake-on-LAN?


8

ウェイクオンランマジックパケットをbashに実装することは可能ですか?古い、カスタマイズされたBusyBoxを使用していますが、ありませんether-wake。次のような他のシェルコマンドで置き換えることは可能ですか?

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

wakeonlan。perlが必要なようですが、おそらくbusyboxにはありません。
jw013

使用できる場合pythonは、code.activestate.com / alias.bashrc
recipes / 358449

BusyBoxには多くの設定オプションがあるので、あなたが持っているものを教えてください。また、あなたはbashを持っていますか?BashとBusyBoxは非常に珍しい組み合わせです。
Gilles 'SO-悪をやめる'

GNU bash、バージョン2.05a.0(1)-release(arm-unknown-linux-gnu)
michelemarcon

回答:


7

起動したいデバイスから見えるイーサネットパケットを送信できるものが必要です。

ether-wakeBusyBox のコマンドは、まさにあなたが求めているものです。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にヌルバイトが含まれている場合、パケットをそれほど簡単に作成することはできません。\xffMACではなく、MACにないバイトを選択して\x42B)と言い、パイプを通過しtrます。

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

実際にbashがある場合(BusyBoxが搭載されたデバイスでは非常に珍しいです。BusyBoxが提供する別のシェルではなく、本当にbashを持っていますか?)、にリダイレクトすることでUDPパケットを送信できます/dev/udp/$hostname/$port

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

私のncは-uをサポートしていません。syslogdは-lをサポートしていません。最後に、/ dev / udpデバイスがありません。:(
michelemarcon

そして、はい、私はbashを持っています、上の私のコメントをチェックしてください。
michelemarcon

@michelemarconあなたの奇妙なデバイスは、私が考えることができるすべての方法の基本的なコンポーネントを欠いているようです。バイナリをコンパイルしてアップロードすることをお勧めします(たとえば、より完全なBusyBoxなど)。
Gilles「SO-悪をやめる」

1

/dev/udp bashによって認識され、ファイルシステムには実際には存在しないので、試してみてください。

対応していれば、スイッチsyslogdなしでも使用できると思います。-l-R

私はbusyboxのを持っているsyslogdwithount -Rいや、ncでもbash、私はまだこだわっています。


0

古いHTCドリームでsshサーバーを実行しています。私のバージョンのbusyboxには、ether-wakeも含まれていなかったため、自分のbusyboxをコンパイルするのに十分なスキルがありません。幸いにも、私は次の方法でPCをウェイクアップできました。

bash
cat mac2.txt | tr B '\000' >/dev/udp/192.0.1.255/7

ブロードキャストIPが私のネットワークで異なることに注意してください。

私は自分のPCにマジックパケットを含むファイル(mac2.txt)を作成し、SFTP経由でサーバーにプッシュしました。私のMacにはnullバイトがあるので、trを使用してすべてのx42バイトを00に置き換える必要があります。これは魅力のように機能しました。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.