Gentoo Logo

1.  Fonctions d'interception standard

Quatre fonctions, qui peuvent être définies par l'administrateur, sont appelées lors du démarrage ou de l'arrêt du réseau. Ces fonctions sont appelées en spécifiant le nom de l'interface en premier, afin de pouvoir contrôler plusieurs interfaces avec un même script.

La valeur renvoyée par les fonctions preup() et predown() doit être 0 (succès) pour que la configuration ou la déconfiguration de l'interface puisse continuer. Si preup() renvoie autre chose que zéro, alors la configuration de l'interface sera annulée. Si predown() renvoie autre chose que zéro, alors l'interface ne sera pas autorisée à être désactivée.

La valeur renvoyée par les fonctions postup() et postdown() n'ont pas d'importance car il n'y a rien à faire après.

La variable ${IFACE} contient le nom de l'interface qui doit être activée ou désactivée. La variable ${IFVAR} contient une version utilisable dans un nom de variable Bash du nom de l'interface.

Exemple de code 1.1 : Exemples de fonctions pre/post up/down

preup() {
  # On teste l'état du lien de l'interface avant de l'activer. Cela ne
  # fonctionne qu'avec certaines cartes réseaux et utilise le paquet ethtool.
  if ethtool ${IFACE} | grep -q 'Link detected: no'; then
    ewarn "No link on ${IFACE}, aborting configuration"
    return 1
  fi

  # On n'oublie surtout pas de renvoyer 0 en cas de succès :
  return 0
}

predown() {
  # La fonction predown par défaut vérifie que le système de fichiers / n'est
  # pas monté en NFS et bloque l'arrêt de l'interface si c'est le cas. Sachez
  # que si vous spécifiez votre fonction predown, ceci ne sera plus vérifié.
  # Voici la fonction, au cas où vous voudriez la voir...
  if is_net_fs /; then
    eerror "root filesystem is network mounted -- can't stop ${IFACE}"
    return 1
  fi

  # On n'oublie surtout pas de renvoyer 0 en cas de succès :
  return 0
}

postup() {
  # Cette fonction pourrait servir, par exemple, à activer une redirection DNS
  # dynamique ou bien à récupérer des mails une fois que l'interface est
  # activée.
       return 0
}

postdown() {
  # Cette fonction est surtout présente pour faire un compte rond... Je n'ai pas
  # encore trouvé quelque chose d'intéressant à faire avec ;-) 
  return 0
}

1.  Fonction d'interception pour Wireless Tools

Note : Cela ne marchera pas avec WPA Supplicant, mais les variables ${ESSID} et ${ESSIDVAR} sont disponibles dans la fonction postup().

Deux fonctions qui seront appelées avant et après la connexion à un point d'accès peuvent être personnalisées. Les fonctions sont appelées en spécifiant le nom de l'interface en premier afin de pouvoir contrôler plusieurs interfaces avec la même fonction.

La valeur renvoyée par la fonction preassociate() doit être 0 pour indiquer que la configuration ou la déconfiguration de l'interface peut continuer. Si preassociate() renvoie autre chose que zéro, alors la configuration de l'interface sera annulée.

La valeur renvoyée par la fonction postassociate() est ignorée, car il n'y a plus rien à faire après.

La variable ${ESSID} contient le nom exact de l'ESSID du point d'accès auquel on se connecte. ${ESSIDVAR} contient ce même nom, mais transformé afin qu'il puisse être utilisé dans le nom d'une variable Bash.

Exemple de code 1.1 : Exemples de fonctions pre/post association

preassociate() {
  # Le code ci-dessous ajoute deux variables de configuration leap_user_ESSID et
  # leap_pass_ESSID. Lorsqu'elles correspondent à l'ESSID auquel on se connecte,
  # on lance le script Cisco Leap.

  local user pass
  eval user=\"\$\{leap_user_${ESSIDVAR}\}\"
  eval pass=\"\$\{leap_pass_${ESSIDVAR}\}\"

  if [[ -n ${user} && -n ${pass} ]]; then
    if [[ ! -x /opt/cisco/bin/leapscript ]]; then
      eend "For LEAP support, please emerge net-misc/cisco-aironet-client-utils"
      return 1
    fi
    einfo "Waiting for LEAP Authentication on \"${ESSID//\\\\//}\""
    if /opt/cisco/bin/leapscript ${user} ${pass} | grep -q 'Login incorrect'; then
      ewarn "Login Failed for ${user}"
      return 1
    fi
  fi

  return 0
}

postassociate() {
  # Cette fonction est surtout présente pour faire un compte rond... Je n'ai pas
  # encore trouvé quelque chose d'intéressant à faire avec ;-) 

  return 0
}

Note : Les variables ${ESSID} et ${ESSIDVAR} ne sont pas disponibles dans les fonctions predown() et postdown().

Dernière mise à jour le 7 mai 2007

Une version originale plus récente datée du 30 octobre 2011 existe.

Résumé : Si vous vous sentez l'âme aventureuse, ajoutez vos propres fonctions de gestion du réseau.

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.