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는 두 가지 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에 없는 바이트를 선택하여 파이프합니다 .\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

답변2

/dev/udpbash에서 인식되며 실제로 파일 시스템에 존재하지 않으므로 시도해 보십시오.

syslogd-l지원만 하면 스위치 없이도 쓸 수 있을 것 같아요 -R.

나는 syslogdouun이 -R없고 ncnonor가 없는 busybox를 가지고 있지만 bash여전히 갇혀 있습니다.

답변3

오래된 HTC dream에서 실행되는 SSH 서버가 있습니다. 내 비지박스 버전에는 ether-wake도 포함되어 있지 않으며 비지박스를 컴파일할 만큼 기술이 부족합니다. 다행히 다음 명령을 사용하여 컴퓨터를 깨울 수 있었습니다.

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

내 네트워크에서는 브로드캐스트 IP가 다르다는 점에 유의하세요.

내 컴퓨터에 매직 패키지가 포함된 파일(mac2.txt)을 만들고 SFTP를 통해 서버에 푸시했습니다. 내 Mac에는 null 바이트가 있으므로 tr을 사용하여 모든 x42 바이트를 00으로 바꿔야 합니다. 그것은 매력처럼 작동합니다.

관련 정보