¿Es posible implementar el paquete mágico wake-on-lan en bash? Estoy usando un BusyBox viejo y personalizado y no tengo ether-wake
. ¿Es posible reemplazarlo con algún otro comando de shell, como:
wakeonlan 11:22:33:44:55:66
busybox
wake-on-lan
michelemarcon
fuente
fuente
python
ver code.activestate.com/recipes/358449-wake-on-lan y poneralias
esto en su.bashrc
Respuestas:
Necesita algo que sea capaz de enviar un paquete Ethernet que será visto por el dispositivo que desea activar.
El
ether-wake
comando en BusyBox es exactamente lo que buscas. Si su BusyBox no lo tiene, considere volver a compilar BusyBox para incluirlo.Si tiene un netcat suficientemente "hinchado" (BusyBox puede tener una de dos
nc
implementaciones, una de las cuales maneja solo TCP), puede enviar un paquete UDP diseñado manualmente a la dirección de transmisión del segmento de red al que está conectado el dispositivo.Otra utilidad de BusyBox que podría abusar para enviar ese paquete es
syslogd
.Si el MAC contiene un byte nulo, no podrá crear el paquete tan fácilmente. Elija un byte que no esté
\xff
y que no esté en el MAC, digamos\x42
(B
), y canalicetr
.Si realmente tiene bash (lo cual es extremadamente inusual en dispositivos con BusyBox, ¿está seguro de que realmente tiene bash y no otro shell proporcionado por BusyBox?), Puede enviar paquetes UDP al redirigirlos
/dev/udp/$hostname/$port
.fuente
/dev/udp
es reconocido por bash y realmente no existe en el sistema de archivos, así que pruébalo.Creo que puede usar
syslogd
sin-l
interruptor, siempre que sea compatible-R
.Tengo busybox con
syslogd
withount-R
, nonc
nibash
y todavía estoy atascado.fuente
Tengo un servidor ssh ejecutándose en el viejo sueño de HTC. Mi versión de busybox tampoco incluía ether-wake y no tengo la habilidad suficiente para compilar mi propia busybox. Afortunadamente logré despertar mi PC usando:
Tenga en cuenta que la transmisión IP es diferente en mi red.
Creé el archivo (mac2.txt) que contenía el paquete mágico en mi PC y lo envié al servidor a través de SFTP. Debido a que mi mac tiene un byte nulo, tengo que usar tr para sustituir todos los x42 bytes con 00. Funcionó de maravilla.
fuente