Gentoo Logo

1.  Funcţii standard

Patru funcţii pot fi definite ce vor fi executate în jurul operaţiilor start/stop. Funcţiile sunt denumite cu numele interfeţei la început, pentru ca o funcţie să poată controla mai multe adaptoare.

Valorile returnate pentru funcţiile preup() şi predown() ar trebui să fie 0 (succes) pentru a indica că procesul de configurare sau deconfigurare poate continua. Dacă preup() returnează o valoarea non-zero, atunci configurarea interfeţei va fi întreruptă. Dacă predown() returnează o valoare non-zero, atunci interfeţei nu i se va permite continuarea deconfigurării.

Valorile returnate de funcţiile postup() şi postdown() sunt ignorate deoarece nu se poate efectua nimic dacă acestea returnează eroare.

${IFACE} este setată pentru interfaţa care trebuie să fie activată/dezactivată. ${IFVAR} este ${IFACE} convertit la un nume de variabilă permis de bash.

Cod 1.1: exemple de funcţii pre/post de activare/dezactivare

preup() {
  # Testăm conectivitatea interfeţei înainte de a o activa.
  # Aceasta funcţionează doar pentru unele adaptoare de
  # reţea şi necesită ca pachetul mii-diag să fie instalat.
  if mii-tool ${IFACE} 2> /dev/null | grep -q 'no link'; then
    ewarn "No link on ${IFACE}, aborting configuration"
    return 1
  fi

  # Testăm conectivitatea interfeţei înainte de a o activa.
  # Aceasta funcţionează doar pentru unele adaptoare de
  # reţea şi necesită ca pachetul ethtool să fie instalat.
  if ethtool ${IFACE} | grep -q 'Link detected: no'; then
    ewarn "No link on ${IFACE}, aborting configuration"
    return 1
  fi

  # Amintiţi-vă să returnaţi valoarea 0 în cazul succesului
  return 0
}

predown() {
  # Implicită în script este testarea directorului rădăcină
  # NFS şi interzicerea dezactivării interfeţelor în acest caz.
  # Notaţi faptul că, dacă specificaţi o funcţie predown() veţi
  # suprascrie această logică. Iat-o în cazul în care aveţi nevoie...
  if is_net_fs /; then
    eerror "root filesystem is network mounted -- can't stop ${IFACE}"
    return 1
  fi

  # Amintiţi-vă să returnaţi valoarea 0 în cazul succesului
  return 0
}

postup() {
  # Această funcţie poate fi utilizată, spre exemplu,
  # pentru înregistrarea unui serviciu DNS dinamic. O altă
  # posibilitate ar fi să trimiteţi/primiţi mesaje, odată
  # ce interfaţa se activează.
  return 0
}

postdown() {
  # Această funcţie este prezentă, mai mult pentru completare...
  # Nu m-am gândit la nici o funcţionalitate deosebită, încă ;-)
  return 0
}

1.  Funcţii standard pentru utilitare wireless

Notă: Aceasta nu funcţiona cu WPA Supplicant - dar variabilele ${ESSID} şi ${ESSIDVAR} sunt disponibile în funcţia postup().

Două funcţii pot fi definite ce vor fi invocate înainte şi după funcţia asociată. Aceste funcţii sunt invocate având numele sufixat cu numele interfeţei pentru ca o singură funcţie să poată controla mai multe adaptoare.

Valorile returnate pentru funcţia postassociate() ar trebui să fie 0 (succes) pentru indicarea continuării configurării sau deconfigurării. Dacă funcţia postassociate() returnează o valoare non-zero, atunci configurarea interfeţei va fi anulată.

Valoarea returnată pentru funcţia postassociate() este ignorată deoarece nu rămâne nici o acţiune de efectuat dacă aceasta indică eroare.

${ESSID} este setată exact la valoarea ESSID a dispozitivului AP la care vă conectaţi. ${ESSIDVAR} este ${ESSID} convertită la un nume de variabilă permis de bash.

Cod 1.1: funcţiile de asociere pre/post

preassociate() {
  # Rândurile de mai jos adaugă două variabile de configurare leap_user_ESSID
  # şi leap_pass_ESSID. Când sunt ambele configurate pentru sesiunea ESSID la care
  # sunteţi conectaţi, atunci rulăm script-ul 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() {
  # Această funcţie este prezentă, mai mult pentru completare...
  # Nu m-am gândit la nici o funcţionalitate deosebită, încă ;-)

  return 0
}

Notă: ${ESSID} şi ${ESSIDVAR} nu sunt disponibile în funcţiile predown() şi postdown().

Actualizat la 22 Decembrie 2005

Versiunea originală a acestui document a fost actualizată ultima dată la 30 Octombrie 2011

Donate to support our development efforts.

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