Gentoo Logo

1.  Standardowe zaczepy funkcji

Można zdefiniować cztery funkcje w pliku /etc/conf.d, które będą uruchamiane przy okazji operacji start/stop. Początkowo funkcje są uruchamiane razem z nazwą interfejsu tak, aby jedna funkcja mogła kontrolować wiele urządzeń.

Wartości jakie są zwracane po wykonaniu funkcji preup oraz predown powinny być równe 0 (sukces), aby powiadomić, że konfiguracja urządzenia mogła być kontynuowana. Jeżeli funkcja preup zwróci wartość różną od 0, konfiguracja zostanie przerwana. Jeżeli funkcja predown zwróci wartość różną od zera, to niemożliwa będzie dalsza dekonfiguracja urządzenia.

Wartości jakie są zwracane po wykonaniu funkcji postup oraz postdown są ignorowane, gdyż nic nie jest wykonywane w przypadku niepowodzenia.

${IFACE} jest ustawione jako nazwa urządzenia, które jest włączane/wyłączane. ${IFVAR} to ${IFACE} przekonwertowane do zmiennej akceptowanej przez bash.

Listing 1.1: Przykłady funkcji pre/post up/down w pliku /etc/conf.d/net

preup() {
   # Sprawdza czy istnieje link na interfejsie, który jest
   # uruchamiany. Ta opcja działa jedynie na kilku urządzeniach
   # sieciowych i wymaga, aby pakiet ethtool był zainstalowany
   if ethtool ${IFACE} | grep -q 'Link detected: no'; then
      ewarn "Brakuje linku na ${IFACE}, przerywam konfigurację"
      return 1
   fi

   # Należy pamiętać o zwróceniu wartości 0 w przypadku powodzenia
   return 0
}

predown() {
   # Domyślny skrypt sprawdza czy istnieje katalog główny NFS i
   # nie zezwala na wyłączenie interfejsów w takim przypadku. Należy
   # zauważyć, że jeśli określi się własną funkcję predown(), to właściwość
   # ta zostanie usunięta. Poniżej znajduje się ten skrypt, jeśli okazałoby
   # się, że jest nadal potrzebny...
   if is_net_fs /; then
      eerror "katalog główny jest zamontowany przez sieć -- nie można zatrzymać ${IFACE}"
      return 1
   fi

   # Należy pamiętać o zwróceniu wartości 0 w przypadku powodzenia
   return 0
}

postup() {
   # Ta funkcja zostanie użyta dla przykładu, aby zarejestrować
   # interfejs z usługą DNS. Inną możliwością jest np. wysłanie wiadomości
   # mailowej z informacją o uruchomieniu interfejsu
   return 0
}

postdown() {
   # Ta funkcja jest tu tylko dla zasady... Jeszcze nie
   # wiadomo co fajnego można z nią zrobić ;-)
   return 0
}

Uwaga: Więcej informacji na temat tworzenia własnych funkcji znajdziemy w pliku /etc/conf.d/net.example.

1.  Funkcje dla sieci bezprzewodowych

Uwaga: Poniższe funkcje nie zadziałają z WPA Supplicant, ale zmienne${ESSID} oraz ${ESSIDVAR} są dostępne w funkcji postup().

Można w pliku /etc/conf.d/net zdefiniować dwie funkcje, które zostaną uruchomione razem z powiązaną funkcją. Funkcje te są uruchamiane najpierw z nazwą interfejsu, aby jedna z nich mogła obsługiwać wiele urządzeń.

Zwracane wartości dla funkcji uruchamianych przed uruchomieniem urządzenia powinny być równe 0 (sukces), aby wskazać, że konfiguracja może być kontynuowana. Jeżeli zostanie zwrócona wartość różna od zera, konfiguracja zostanie przerwana.

Zwracane wartości dla funkcji preassociate są ignorowane gdyż i tak nie mają wpływu na dalszą konfigurację.

${ESSID} jest równe wartości ESSID punktu dostępu z którym dokonywane jest połączenie. ${ESSIDVAR} jest równe ${ESSID} przekonwertowane do zmiennej akceptowanej przez powłokę bash

Listing 1.1: Funkcje pre/post association w pliku /etc/conf.d/net

preassociate() {
   # Poniższe linijki dodają dwie zmienne leap_user_ESSID oraz
   # leap_pass_ESSID. Jeżeli obie są skonfigurowane dla ESSID-a z którym są
   # połączone, uruchamiany jest skrypt 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() {
   # Ta funkcja jest tu tylko dla zasady... Jeszcze nie
   # wiadomo co fajnego można z nią zrobić ;-)

   return 0
}

Uwaga: ${ESSID} oraz ${ESSIDVAR} są niedostępne dla funkcji predown() oraz postdown().

Uwaga: Więcej informacji na temat tworzenia własnych funkcji znajdziemy w pliku /etc/conf.d/net.example.

Zaktualizowano 14 maja 2010

Oryginalna wersja tego dokumentu została po raz ostatni zaktualizowana 30 października 2011. Jeśli chcesz pomóc w aktualizacji tego dokumentu do najnowszej wersji, skontaktuj się z Łukaszem Damentko, koordynatorem polskiego projektu tłumaczeń dokumentacji Gentoo.

Podsumowanie: Osoby czujące się na siłach mogą znacznie rozszerzyć funkcje swojej sieci.

Donate to support our development efforts.

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