Gentoo Logo

1.  Standardní funkce

Pro ovlivnění operací start a stop můžete definovat čtyři vlastní funkce. Jako první parametr je jim předáno jméno rozhraní, a proto můžete využít jednu funkci pro nastavování více rozhraní.

Pokud funkce preup() a predown() vrátí hodnotu 0 (tj. úspěch), může konfigurace či dekonfigurace rozhraní pokračovat. Pokud je návratová hodnota nenulová, preup() přeruší aktivaci rozhraní a predown() zabrání jeho deaktivaci.

Návratové hodnoty funkcí postup() a postdown() jsou ignorovány, neboť na případné selhání již není možné reagovat.

Proměnná ${IFACE} obsahuje jméno rozhraní, se kterým se právě operuje, ${IFVAR} je ${IFACE} ve formátu, který bash povoluje pro názvy proměnných.

Výpis kódu 1.1: Ukázky funkcí pre/post up/down

preup() {
  # Otestování spojení (typicky zasunutý kabel) před aktivací rozhraní.
  # Všechny druhy síťových adaptérů tuto funkci nepodporují, navíc je
  # vyžadována instalace balíčku mii-diag.
  if mii-tool ${IFACE} 2> /dev/null | grep -q 'no link'; then
    ewarn "No link on ${IFACE}, aborting configuration"
    return 1
  fi

  # Otestování spojení (typicky zasunutý kabel) před aktivací rozhraní.
  # Všechny druhy síťových adaptérů tuto funkci nepodporují, navíc je
  # vyžadována instalace balíčku ethtool.
  if ethtool ${IFACE} | grep -q 'Link detected: no'; then
    ewarn "No link on ${IFACE}, aborting configuration"
    return 1
  fi

  # Pro indikaci úspěchu je nutné vrátit hodnotu 0
  return 0
}

predown() {
  # Výchozí chování této funkce zabrání deaktivaci rozhraní, pokud je
  # kořenový systém souborů připojený přes NFS. Pokud specifikujete vlastní
  # funkci predown(), zakážete tuto kontrolu. Zde je odpovídající kód:
  if is_net_fs /; then
    eerror "root filesystem is network mounted -- can't stop ${IFACE}"
    return 1
  fi

  # Pro indikaci úspěchu je nutné vrátit hodnotu 0
  return 0
}

postup() {
  # V této funkci můžete například zaregistrovat svoji IP adresu
  # do služby poskytující dynamická DNS jména, případně odeslat a přijmout poštu
  # a podobně.
       return 0
}

postdown() {
  # Funkce postdown() existuje de facto pouze pro úplnost. Na žádné
  # kreativní využití jsme ještě nepřišli ;-)
  return 0
}

1.  Funkce pro bezdrátové sítě

Poznámka: Pokud používáte WPA Supplicant, nebudou tyto funkce pracovat, máte však možnost využít proměnné ${ESSID} a ${ESSIDVAR} ve funkci postup().

Pro kontrolu chování při asociaci k bezdrátové síti je možné definovat dvě další funkce. Jejich první parametr je opět jméno rozhraní.

Návratová hodnota 0 (úspěch) funkce preassociate() indikuje, že konfigurace/dekonfigurace rozhraní může pokračovat, nenulová hodnota prováděnou akci přeruší.

Výsledek funkce postassociate() je ignorován, neboť na něj ani nelze odpovídajícím způsobem reagovat.

Hodnota proměnné ${ESSID} obsahuje přesné ESSID AP, na které se připojujete, ${ESSIDVAR} totéž, avšak po konverzi do podoby, kterou bash akceptuje pro názvy proměnných.

Výpis kódu 1.1: Funkce před asociací a po ní

preassociate() {
  # Následující kód přidává dvě konfigurační proměnné — leap_user_ESSID
  # a leap_pass_ESSID. Pokud obě dvě pro danou ESSID existují, je je možné
  # použít pro spuštení skriptu 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() {
  # Funkce postdown() existuje de facto pouze pro úplnost. Na žádné
  # kreativní využití jsme ještě nepřišli ;-)

  return 0
}

Poznámka: Proměnné ${ESSID} a ${ESSIDVAR} nejsou k dispozici ve funkcích predown() a postdown().

Aktualizace: 22. prosinec 2005

Poslední aktualizace původni verze tohoto dokumentu: 17. prosinec 2013

Donate to support our development efforts.

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