Gentoo Logo

[ << ] [ < ] [ Hauptseite ] [ > ] [ >> ]


5. Funktionalität hinzufügen

Inhalt:

5.a. Erweiterung der Standardfunktionen

Vier Funktionen können in /etc/conf.d/net definiert werden, die im Zusammenhang mit den start/stop Funktionen aufgerufen werden. Die Funktionen werden mit dem Namen der Schnittstelle zuerst aufgerufen, so dass eine Funktion mehrere Adapter kontrollieren kann.

Der Rückgabewert der preup() und predown() Funktionen sollte 0 (Erfolg) sein um die erfolgreiche Konfiguration der Schnittstelle anzuzeigen. Gibt preup() einen von Null verschiedenen Wert zurück, wird die Konfiguration abgebrochen. Eine Dekonfiguration wird nicht durchgeführt, falls predown() einen von Null verschiedenen Wert zurückgibt.

Die Rückgabewerte der postup() und postdown() Funktionen werden ignoriert, da dort keine Reaktion auf Fehler vorgesehen ist.

${IFACE} wird auf die Schnittstelle gesetzt, die (de-)aktiviert werden soll. ${IFVAR} ist ${IFACE} konvertiert zu einem Variablennamen, den die Bash erlaubt.

Befehlsauflistung 1.1: Beispiele für pre/post up/down Funktionen in /etc/conf.d/net

preup() {
  # Überprüfe die Verbindung der Schnittstelle, bevor sie aktiviert wird.
  # Funktioniert nur bei einigen Netzwerkadaptern und setzt voraus,
  # das das ethtool Paket installiert ist.
  if ethtool ${IFACE} | grep -q 'Link detected: no'; then
    ewarn "No link on ${IFACE}, aborting configuration"
    return 1
  fi

  # Denken Sie daran, im Erfolgsfall 0 zurückzugeben
  return 0
}

predown() {
  # Standardmäßig wird die Deaktivierung einer Schnittstelle nicht
  # durchgeführt, wenn darüber NFS Laufwerke gemounted sind. Geben Sie jedoch eine
  # eigene predown() Funktion an, wird dieses Verhalten überschrieben. Hier ist
  # diese Funktion für den Fall, das sie sie brauchen...
  if is_net_fs /; then
    eerror "root filesystem is network mounted -- can't stop ${IFACE}"
    return 1
  fi

  # Denken Sie daran, im Erfolgsfall 0 zurückzugeben
  return 0
}

postup() {
  # Diese Funktion können Sie beispielsweise benutzen, um bei einem dynamischen
  # DNS Service zu registrieren. Eine weitere Möglichkeit wäre, bei Aktivierung der
  # Schnittstelle Emails zu senden und zu empfangen.
  return 0
}

postdown() {
  # Diese Funktion gibt es in erster Linie aus Vollständigkeitsgründen.
  # Mir ist bislang noch nichts Sinnvolles eingefallen, was man mit ihr
  # machen könnte ;-)
  return 0
}

Notiz: Für weitere Informationen, wie Sie Ihre eigenen Funktionen schreiben können, siehe /usr/share/doc/openrc-*/net.example.bz2.

5.b. Funktionserweiterungen für die Wireless Tools

Notiz: Funktioniert nicht mit WPA Supplicant - die ${ESSID} und ${ESSIDVAR} Variablen sind in der postup() Funktion verfügbar.

Zwei Funktionen können in /etc/conf.d/net definiert werden, die im Zusammenhang mit der associate Funktion aufgerufen werden. Die Funktionen werden mit dem Namen der Schnittstelle zuerst aufgerufen, so das man mit einer Funktion mehrere Adapter kontrollieren kann.

Der Rückgabewert der preassociate() Funktion sollte 0 sein, um anzuzeigen, dass die (De-)Konfiguration der Schnittstelle fortgesetzt werden kann. Wenn preassociate() einen von Null verschiedenen Wert zurückgibt, wird die Konfiguration der Schnittstelle abgebrochen.

Der Rückgabewert der postassociate() Funktion wird ignoriert, da es im Fehlerfall nichts zu tun gibt.

${ESSID} wird auf die exakte ESSID des Zugangspunktes gesetzt, zu dem Sie sich verbinden. ${ESSIDVAR} ist ${ESSID} umgewandelt in einen Variablennamen, den Bash erlaubt.

Befehlsauflistung 2.1: pre/post association Funktionen in /etc/conf.d/net

preassociate() {
  # Im folgenden werden zwei Konfigurationsvariablen leap_user_ESSID
  # und leap_pass_ESSID hinzugefügt. Sind beide für die ESSID gesetzt, zu der
  # verbunden wird, dann wird das CISCO LEAP Skript ausgeführt.

  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() {
  # Diese Funktion gibt es in erster Linie aus Vollständigkeitsgründen.
  # Mir ist bislang noch nichts Sinnvolles eingefallen, was man mit ihr
  # machen könnte ;-)

  return 0
}

Notiz: Auf ${ESSID} und ${ESSIDVAR} kann in den predown() und postdown() Funktionen nicht zugegriffen werden.

Notiz: Für weitere Informationen, wie Sie Ihre eigenen Funktionen schreiben können, siehe /usr/share/doc/openrc-*/net.example.bz2.


[ << ] [ < ] [ Hauptseite ] [ > ] [ >> ]


Drucken

Alles ansehen

Seite aktualisiert 11. Februar 2013

Die Originalversion dieses Dokuments wurde zuletzt am 17. Dezember 2013 aktualisiert

Zusammenfassung: Wenn Sie etwas Zeit mitbringen können Sie Ihre eigenen Funktionen zum Netzwerk hinzufügen.

Sven Vermeulen
Autor

Grant Goodyear
Autor

Roy Marples
Autor

Daniel Robbins
Autor

Chris Houser
Autor

Jerry Alexandratos
Autor

Seemant Kulleen
Gentoo x86 Entwickler

Tavis Ormandy
Gentoo Alpha Entwickler

Jason Huebel
Gentoo AMD64 Entwickler

Guy Martin
Gentoo HPPA Entwickler

Pieter Van den Abeele
Gentoo PPC Entwickler

Joe Kallar
Gentoo SPARC Entwickler

John P. Davis
Bearbeiter

Pierre-Henri Jondot
Bearbeiter

Eric Stockbridge
Bearbeiter

Rajiv Manglani
Bearbeiter

Jungmin Seo
Bearbeiter

Stoyan Zhekov
Bearbeiter

Jared Hudson
Bearbeiter

Colin Morey
Bearbeiter

Jorge Paulo
Bearbeiter

Carl Anderson
Bearbeiter

Jon Portnoy
Bearbeiter

Zack Gilburd
Bearbeiter

Jack Morgan
Bearbeiter

Benny Chuang
Bearbeiter

Erwin
Bearbeiter

Joshua Kinard
Bearbeiter

Tobias Scherbaum
Bearbeiter

Lars Weiler
Bearbeiter

Jochen Maes
Bearbeiter

Xavier Neys
Bearbeiter

Joshua Saddler
Bearbeiter

Joseph Jezak
Bearbeiter

Gerald J. Normandin Jr.
Korrektor

Donnie Berkholz
Korrektor

Ken Nowack
Korrektor

Tobias Scherbaum
Übersetzer

Jens Schittenhelm
Übersetzer

Patrick Sudowe
Übersetzer

Torsten Veller
Übersetzer

Michael Frey
Übersetzer

Markus Nigbur
Übersetzer

Boris Ruppert
Übersetzer

Jan Hendrik Grahl
Übersetzer

Christian Hartmann
Korrektor

Donate to support our development efforts.

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