Gentoo Logo

Upozornění : Tento dokument již neplatí a není udržován.


[ << ] [ < ] [ Domů ] [ > ] [ >> ]


5. Přidávání funkcí

Obsah:

5.a. 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
}

5.b. 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 2.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().


[ << ] [ < ] [ Domů ] [ > ] [ >> ]


Tisk

Zobrazit všechny

Aktualizace: 30. srpen 2006

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

Shrnutí: Jste-li dobrodružné povahy, můžete do nastavení síťování přidat vlastní funkce.

Sven Vermeulen
Autor

Roy Marples
Autor

Daniel Robbins
Autor

Chris Houser
Autor

Jerry Alexandratos
Autor

Seemant Kulleen
Gentoo x86 vývojář

Tavis Ormandy
Gentoo Alpha vývojář

Jason Huebel
Gentoo AMD64 vývojář

Guy Martin
Gentoo HPPA vývojář

Pieter Van den Abeele
Gentoo PPC vývojář

Joe Kallar
Gentoo SPARC vývojář

John P. Davis
Editor

Pierre-Henri Jondot
Editor

Eric Stockbridge
Editor

Rajiv Manglani
Editor

Jungmin Seo
Editor

Stoyan Zhekov
Editor

Jared Hudson
Editor

Colin Morey
Editor

Jorge Paulo
Editor

Carl Anderson
Editor

Jon Portnoy
Editor

Zack Gilburd
Editor

Jack Morgan
Editor

Benny Chuang
Editor

Erwin
Editor

Joshua Kinard
Editor

Tobias Scherbaum
Editor

Xavier Neys
Editor

Grant Goodyear
Korektor

Gerald J. Normandin Jr.
Korektor

Donnie Berkholz
Korektor

Ken Nowack
Korektor

Lars Weiler
Přispěvatel

Jan Kundrát
Překladatel

Jan Nárovec
Překladatel

Martin Tesař
Překladatel

Mirek Dvořák
Korektor

Adam Kudrna
Korektor

Donate to support our development efforts.

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