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