Gentoo Logo

1.  Fonctions accrochables standard

Des points d'accroche sont prévus pour quatre fonctions, qui peuvent être définies par l'administrateur dans /etc/conf.d/net, et sont appelées lors du démarrage/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
}

Note : pour plus d'information sur la façon d'écrire vos propres fonctions accrochables, reportez-vous à /usr/share/doc/netifrc-*/net.example.bz2.

1.  Fonction accrochables pour Wireless Tools

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

Des points d'accroche sont prévus pour deux fonctions, définies dans /etc/conf.d/net, qui sont appelées avant et après la connexion à un point d'accès et 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 dans /etc/conf.d/net

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().

Note : pour plus d'information sur la façon d'écrire vos propres fonctions, reportez-vous à /usr/share/doc/netifrc-*/net.example.bz2.

Dernière mise à jour le 17 décembre 2013

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-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.