Gentoo Logo

[ << ] [ < ] [ Home ] [ > ] [ >> ]


5. Menambahkan Kegunaan

Daftar Isi:

5.a. Hook Fungsi Standar

Empat fungsi dapat didefinisikan yang nantinya akan dipanggil di sekeliling operasi start/stop. Fungsi-fungsi dipanggil dengan nama antarmuka dulu agar satu fungsi dapat mengendalikan banyak antarmuka.

Nilai hasil untuk fungsi preup() dan predown() harus 0 (sukses) untuk mengindikasikan bahwa konfigurasi atau penghapusan konfigurasi antarmuka dapat dilanjutkan. Jika preup() memberikan nilai selain nol, maka konfigurasi antarmuka akan dibatalkan. Jika predown() memberikan hasil selain nol, maka antarmuka tidak akan diizinkan untuk melanjutkan penghapusan konfigurasi.

Nilai hasil untuk fungsi postup() dan postdown() akan diabaikan karena tidak ada yang perlu dilakukan jika fungsi-fungsi ini mengindikasikan kegagalan.

${IFACE} diisi dengan antarmuka ketika sedang dinyalakan/dimatikan. ${IFVAR} adalah ${IFACE} yang dikonversikan ke nama-nama variabel yang diizinkan oleh bash.

Daftar KodeĀ 1.1: Contoh-contoh fungsi pre/post up/down

preup() {
  # Percobaan untuk link di antarmuka sebelum dinyalakan. Ini hanya
  # akan bekerja pada beberapa kartu jaringan dan membutuhkan paket ethtool.
  if ethtool ${IFACE} | grep -q 'Link detected: no'; then
    ewarn "No link on ${IFACE}, aborting configuration"
    return 1
  fi

  # Jangan lupa berikan nilai 0 jika sukses
  return 0
}

predown() {
  # Default pada skrip adalah menguji root NFS dan melarang antarmuka
  # untuk dimatikan pada kasus tersebut. Perlu diketahui bahwa jika anda
  # menentukan sebuah fungsi predown() anda akan menindih logika tersebut. Ini
  # dia, jika anda memang menginginkannya...
  if is_net_fs /; then
    eerror "root filesystem is network mounted -- can't stop ${IFACE}"
    return 1
  fi

  # Jangan lupa berikan nilai 0 jika sukses
  return 0
}

postup() {
  # Fungsi ini dapat digunakan, misalnya, untuk melakukan pendaftaran
  # ke sebuah servis DNS dinamis. Kemungkinan lainnya ialah untuk
  # mengirim/menerima email ketika antarmuka telah dinyalakan.
       return 0
}

postdown() {
  # Fungsi ini dicantumkan hanya untuk kelengkapan.... Penulis belum
  # pernah mendapatkan ide untuk melakukan apapun dengannya ;-)
  return 0
}

5.b. Hook Fungsi Tool Wireless

Catatan: Ini tidak akan bekerja dengan Permohonan WPA - tetapi variabel ${ESSID} dan ${ESSIDVAR} tersedia di fungsi postup().

Dua fungsi dapat didefinisikan yang akan dipanggil di sekeliling fungsi-fungsi terkait. Fungsi-fungsi ini dipanggil dengan nama antarmuka dulu agar satu fungsi dapat mengendalikan banyak antarmuka.

Nilai hasil dari fungsi preassociate() harus berupa 0 (sukses) untuk mengindikasikan bahwa konfigurasi atau penghapusan konfigurasi antarmuka dapat dilanjutkan. Jika preassociate() memberikan nilai bukan nol, maka konfigurasi antarmuka akan dibatalkan.

Nilai hasil dari fungsi postassociate() akan diabaikan karena tidak ada yang perlu dilakukan jika fungsi ini mengindikasikan kegagalan.

${ESSID} di-set ke ESSID yang tepat dari AP yang anda hubungi. ${ESSIDVAR} merupakan ${ESSID} yang dikonversikan ke nama-nama variabel yang diizinkan oleh bash.

Daftar KodeĀ 2.1: Fungsi-fungsi asosiasi pre/post

preassociate() {
  # Fungsi-fungsi di bawah ini menambahkan dua variabel konfigurasi
  # leap_user_ESSID dan leap_pass_ESSID. Ketika keduanya dikonfigurasikan untuk
  # ESSID yang dihubungi maka kita akan menjalankan skrip 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() {
  # Fungsi ini dicantumkan hanya untuk kelengkapan.... Penulis belum
  # pernah mendapatkan ide untuk melakukan apapun dengannya ;-)

  return 0
}

Catatan: ${ESSID} dan ${ESSIDVAR} tidak tersedia di fungsi predown() dan postdown().


[ << ] [ < ] [ Home ] [ > ] [ >> ]


Print

View all

Diperbarui 6 Juni 2007

Versi asli dari terjemahan ini tidak diperbarui lagi

Rangkuman: Jika anda suka berpetualang, anda bisa menambahkan beberapa kegunaan jaringan anda sendiri.

Sven Vermeulen
Author

Roy Marples
Author

Daniel Robbins
Author

Chris Houser
Author

Jerry Alexandratos
Author

Seemant Kulleen
Gentoo x86 Developer

Tavis Ormandy
Gentoo Alpha Developer

Jason Huebel
Gentoo AMD64 Developer

Guy Martin
Gentoo HPPA developer

Pieter Van den Abeele
Gentoo PPC developer

Joe Kallar
Gentoo SPARC developer

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

Xavier Neys
Editor

Joshua Saddler
Editor

Grant Goodyear
Reviewer

Gerald J. Normandin Jr.
Reviewer

Donnie Berkholz
Reviewer

Ken Nowack
Reviewer

Lars Weiler
Contributor

Siauw Nam Khong
Translator

Dzikri Aziz
Translator

Donate to support our development efforts.

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