El wakeonlan, los cables de red y el sistema sudo

Son ya dos las máquinas que en casa están casi siempre en modo ahorro de energía y cuya finalidad es recibir copias de seguridad. O hacer, según me dé, aunque lo veo más complicado.

En una de ellas a la que he llamado silo haciendo referencia su función principal de almacenar reservas, he descubierto algunas cosas interesantes sobre el funcionamiento de la gestión de energía. La primera es que existen varias maneras para llevar la máquina a este modo de funcionamiento, pero con la llegada tiempo atrás de systemd y su prima la mejor forma es emplearlo: $ sudo systemctl suspend.

También he aprendido que si el cable de red está piojoso o en algún estado similar tras permanecer años en una caja el sistema no funciona. Sí, el modo de ahorro se activa pero luego no es posible despertarlo. Toca cambiar el cable o ir ajustándolo con pequeños vaivenes hasta que recibe la señal WOL. La susodicha señal es un acrónimo para Wake On Lan y consiste en enviar un paquete UDP -especialmente construido- a su interfaz de red empleando la dirección MAC del mismo. Y si el cable está más para allá que para acá pues lo dicho: no va.

Una vez que la máquina está despierta tarda muy poco, uno o dos segundos, en estar disponible para el uso. Esto es importante porque si vas a emplearlo como almacén de datos es necesario asegurarse antes de que está despierto. Se trabaja con él normalmente y al terminar se le vuelve otra vez al sueño. Si no es posible hacerlo durante ese trabajo porque es una conexión directa de datos (por ejemplo con borg) lo mejor es conectar más tarde con SSH y ponerlo a dormir.

Teniendo un usuario para estas operaciones como osr (que es el que siempre uso) basta con añadir una regla para él en el sistema sudo (un archivo de nombre arbitrario en /etc/sudoers.d) y lanzarlo directamente.

# suspend sudoers.d config file
# ------------------------------------
#
# Please consider a look at /etc/sudoers.d/README howto enable this file.
#

# Keep apt-dater's MAINTAINER environment variable
Defaults        env_keep += MAINTAINER

# Allow members of group adm to execute the apt-get command
osr     ALL=NOPASSWD: /usr/bin/systemctl suspend

Como se puede ver se ha limitado mucho lo que es posible llamar. Para que funcione debe hacerse de la siguiente forma:

$ ssh osr@silo sudo /usr/bin/systemctl suspend

Asumiendo, claro, que la conexión vía SSH esté establecida y no necesite contraseña y demás.

¿Y para despertar a la bestia? Pues para eso se pueden emplear varios programas (demasiados tal vez) que le envían la trama a su dirección MAC. Obtengamos primero dicha dirección o no hacemos nada.

Una vez con ella enviamos le paquete para despertarlo de esta forma:

# la dirección es un ejemplo
$ wakonlan c8:1f:66:08:fa:29

Y si el maldito cable está bien, como he dicho, pues funciona. Si no te toca conectar un monitor, darle energía e incluso conectar un teclado para saber qué coño está pasando en la máquina.

Sé listo: comprueba el puto cable.