Handbook:PPC/Networking/Extending/hu
Standard függvényhorgok
Négy függvény határozható meg az /etc/conf.d/net fájlban:
preup()
, amelyet egy interfész felhozatala előtt hívnak meg.predown()
, amelyet egy interfész lehozása előtt hívnak meg.postup()
, amelyet egy interfész felhozatala után hívnak meg.postdown()
, amelyet egy interfész lehozása után hívnak meg.
Ezeket a függvényeket mindegyik interfész nevével hívják meg, amely az egyes függvényeken belül az IFACE változón keresztül érhető el, így egy függvény több interfészt is képes irányítani.
A preup()
és predown()
függvények visszatérési értékei a következők kell, hogy legyenek:
- 0, amely a sikert jelzi, és hogy az interfész beállítása vagy nem beállítása (dekonfigurálása) folytatódhat.
- Egy nullánál nagyobb bármely más érték.
Ha a preup()
nulla értéknél nagyobbat ad vissza, akkor az interfész beállítása megszakad. Ha a predown()
nulla értéknél nagyobbat ad vissza, akkor az interfész nem beállítása (dekonfigurálása) nem folytatható.
A postup()
és postdown()
függvények visszatérési értékei figyelmen kívül maradnak, mivel nincs teendő, ha azok hibát jeleznek.
A ${IFACE} az éppen felhozott/lehozott interfészre van állítva. A ${IFVAR} a ${IFACE} változóvá alakított változata, amelyet a bash lehetővé tesz.
/etc/conf.d/net
Példák a pre/post up/down függvényekrepreup() {
# Tesztelje a linket az interfészen, mielőtt működésbe hozná. Ez csak
# csak néhány hálózati adapteren működik,
# és az ethtool szoftvercsomag telepítését igényli.
if ethtool ${IFACE} | grep -q 'Link detected: no'; then
ewarn "No link on ${IFACE}, aborting configuration"
return 1
fi
# Ne feledje, hogy siker esetén 0 a visszatérési érték.
return 0
}
predown() {
# Az alapértelmezett beállítás a szkriptben az, hogy ellenőrizze az NFS gyökérrendszert,
# és ebben az esetben ne engedélyezze az interfészek leállítását.
# Vegye figyelembe, hogy ha megad egy predown() függvényt, akkor felülírja ezt a logikát.
# Itt van arra az esetre, ha mégis szüksége van rá...
if is_net_fs /; then
eerror "root filesystem is network mounted -- can't stop ${IFACE}"
return 1
fi
# Ne feledje, hogy siker esetén 0 a visszatérési érték.
return 0
}
postup() {
# Ez a függvény például használható egy dinamikus DNS szolgáltatáshoz való regisztrációhoz.
# Egy másik lehetőség az lehetne,
# hogy az interfész aktiválása után e-maileket küldjön/fogadjon.
return 0
}
postdown() {
# Ez a függvény főként a teljesség kedvéért van itt...
# Még nem gondoltam ki semmi igazán klasszat hozzá ;-)
return 0
}
További információért a függvények írásáról, kérjük olvassa el a következőt: /usr/share/doc/netifrc-*/net.example.bz2.
Wireless függvényhorgok
Ez nem fog működni a WPA Supplicant programmal, de a ${ESSID} és ${ESSIDVAR} változók elérhetők a
postup()
függvényben.Két függvény határozható meg az /etc/conf.d/net fájlban:
preassociate()
, amely az asszociáció előtt van meghívva.postassociate()
, amely az asszociáció után van meghívva.
Ezeket a függvényeket mindegyik interfész nevével hívják meg, amely az egyes függvényeken belül az IFACE változón keresztül érhető el, így egy függvény több interfészt is képes irányítani.
A preassociate() függvény visszatérési értékei a következők kell, hogy legyenek:
- 0, amely a sikert jelzi, és a beállítás folytatódhat.
- Nulla értéknél nagyobb, bármely más érték.
Ha a preassociate()
nulla értéknél nagyobbat ad vissza, akkor az interfész beállítása megszakad.
Ha nincs teendő, akkor a postassociate()
függvény visszatérési értéke figyelmen kívül lesz hagyva, ha hibát jelez.
Az egyes függvényeken belül az éppen csatlakozó hozzáférési pont pontos ESSID értéke az ESSID változón keresztül érhető el. A ${ESSIDVAR} a ${ESSID} változó névre alakított változata, amelyet a bash lehetővé tesz.
/etc/conf.d/net
Példa a pre/post asszociációs függvényekrepreassociate() {
# Az alábbiak kettő beállításváltozót adnak hozzá: leap_user_ESSID és leap_pass_ESSID.
# Amikor mindkettő be van állítva az adott ESSID-re, amelyhez csatlakozik,
# akkor futtatjuk a CISCO LEAP szkriptet.
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() {
# Ez a függvény főként a teljesség kedvéért van itt...
# Még nem gondoltam ki semmi igazán klasszat hozzá ;-)
return 0
}
A ${ESSID} és a ${ESSIDVAR} változók nem érhetők el a
predown()
és postdown()
függvényekben.További információért az egyedi függvények írásáról, kérjük, olvassa el a következőt: /usr/share/doc/netifrc-*/net.example.bz2.