[WOL] Problemas de Wake On Lan

Debian 11 / 12

Síntoma

Solución

  1. Como root instalamos previamente en esos equipos el paquete ethtool si aún no lo tuviésemos.
    # aptitude install ethtool
    
  2. Con la orden
    $ ip a
    

    conocemos el nombre que asigna el sistema operativo a nuestra tarjeta de red, por ejemplo enp3s0.

  3. Ejecutamos
    # ethtool -s enp3s0 wol g
    
  4. Apagamos el ordenador, por ejemplo con
    # poweroff
    
  5. Mandamos un paquete WOL y comprobamos que se enciende.

Automatización

  1. Creo y edito el script, por ejemplo en el directorio del root:
    wol.sh
    #!/bin/bash
    ethtool -s enp3s0 wol g

    A este fichero hay que darle permisos de ejecución…

    # chmod a+x wol.sh
    
  2. Creo y edito el fichero de servicio, por ejemplo en el mismo directorio anterior:
    wol.service
    [Unit]
    Description=Corrige WOL en ASUS
    After=network.target network-online.target
    Wants=network-online.target
    
    [Service]
    ExecStart=/root/wol.sh
    
    [Install]
    WantedBy=multi-user.target
  3. El último paso es habilitar el servicio para que se inicie con cada arranque del sistema:
    # systemctl enable /root/wol.service
    

    También se puede iniciar un servicio de forma manual en cualquier momento con:

    # systemctl start wol.service
    

    Además, en cualquier momento se puede comprobar que el servicio está cargado en el equipo con:

    # systemctl status wol.service
    

Script de prueba con todo el proceso

Para ejecutar desde el home de root. Habrá que controlar que la identificación de la tarjeta de red sea la correcta: En este script se supone que es enp3s0 debiendo cambiar ese nombre según lo que nos informe la orden

 $ ip a
arregla_wol.sh
#!/bin/bash
aptitude install ethtool

echo "#!/bin/bash" > wol.sh
echo "ethtool -s enp3s0 wol g" >> wol.sh
chmod a+x wol.sh

echo "[Unit]" > wol.service
echo "Description=Corrige WOL" >> wol.service
echo "After=network.target network-online.target" >> wol.service
echo "Wants=network-online.target" >> wol.service
echo "" >> wol.service
echo "[Service]" >> wol.service
echo "ExecStart=/root/wol.sh" >> wol.service
echo "" >> wol.service
echo "[Install]" >> wol.service
echo "WantedBy=multi-user.target" >> wol.service

systemctl enable /root/wol.service
systemctl start wol.service
systemctl status wol.service