Réveiller un serveur avec NetworkManager
Références
Lancement de scripts en fonction du réseau
Documentation de Arch Linux sur NetworkManager
Bût
Je veux démarrer mon NAS quand un des ordinateurs est démarré. De cette façon, les sauvegardes peuvent être effectuées et on peut accéder aux données partagées (musique, photos, vidéos...)
Mise en œuvre
Le BIOS du NAS est configuré de façon à accepter le signal WOL (Wake On Lan).
Pour les ordinateurs sous Linux, j'utilise le programme etherwake pour envoyer le signal WOL sur une interface réseau à destination de l'adresse MAC du NAS.
etherwake -i interface mac_address
Cette commande est intégrée dans un script shell déposé dans le répertoire dispatcher.d de NetworkManager :
/etc/NetworkManager/dispatcher.d/
Lorsqu'il est appelé par le dispacher de NetworManager, ce script reçoit deux paramètres : l'interface réseau (eth0 par exemple) et l'état de cette interface (up or down).
En utilisant la commande /sbin/ip addr show $IF to $NETMASK qui renvoie les paramètres de l'interface réseau $IF si cette dernière est déclarée dans le réseau décrit par $NETMASK.
Voici le script utilisé :
::: bash
#!/bin/sh
# Send a magic packet when an interface comes up, to allow it to start
# the remote server with the MAC address.
set -e
PATH=/sbin:/bin:/usr/sbin
IF=$1
STATUS=$2
MAC=00:11:22:33:44:55
if [ "$IF" = "eth0" ] && [ "$STATUS" = "up" ]; then
#LAN Subnet at home
NETMASK="10.0.0.0/8"
if [ -n "`/sbin/ip addr show $IF to $NETMASK`" ]; then
if [ -e /usr/sbin/etherwake ]; then
/usr/sbin/etherwake -i $IF $MAC
exit $?
fi
fi
fi