|
1.
Standardní funkce
Pro ovlivnění operací start a stop můžete definovat čtyři vlastní
funkce. Jako první parametr je jim předáno jméno rozhraní, a proto můžete
využít jednu funkci pro nastavování více rozhraní.
Pokud funkce preup() a predown() vrátí hodnotu 0 (tj. úspěch),
může konfigurace či dekonfigurace rozhraní pokračovat. Pokud je
návratová hodnota nenulová, preup() přeruší aktivaci rozhraní a
predown() zabrání jeho deaktivaci.
Návratové hodnoty funkcí postup() a postdown() jsou ignorovány,
neboť na případné selhání již není možné reagovat.
Proměnná ${IFACE} obsahuje jméno rozhraní, se kterým se právě operuje,
${IFVAR} je ${IFACE} ve formátu, který bash povoluje pro
názvy proměnných.
Výpis kódu 1.1: Ukázky funkcí pre/post up/down |
preup() {
if mii-tool ${IFACE} 2> /dev/null | grep -q 'no link'; then
ewarn "No link on ${IFACE}, aborting configuration"
return 1
fi
if ethtool ${IFACE} | grep -q 'Link detected: no'; then
ewarn "No link on ${IFACE}, aborting configuration"
return 1
fi
return 0
}
predown() {
if is_net_fs /; then
eerror "root filesystem is network mounted -- can't stop ${IFACE}"
return 1
fi
return 0
}
postup() {
return 0
}
postdown() {
return 0
}
|
1.
Funkce pro bezdrátové sítě
Poznámka:
Pokud používáte WPA Supplicant, nebudou tyto funkce pracovat, máte však možnost
využít proměnné ${ESSID} a ${ESSIDVAR} ve funkci postup().
|
Pro kontrolu chování při asociaci k bezdrátové síti je možné definovat dvě
další funkce. Jejich první parametr je opět jméno rozhraní.
Návratová hodnota 0 (úspěch) funkce preassociate() indikuje, že
konfigurace/dekonfigurace rozhraní může pokračovat, nenulová hodnota prováděnou
akci přeruší.
Výsledek funkce postassociate() je ignorován, neboť na něj ani nelze
odpovídajícím způsobem reagovat.
Hodnota proměnné ${ESSID} obsahuje přesné ESSID AP, na které se
připojujete, ${ESSIDVAR} totéž, avšak po konverzi do podoby, kterou
bash akceptuje pro názvy proměnných.
Výpis kódu 1.1: Funkce před asociací a po ní |
preassociate() {
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() {
return 0
}
|
Poznámka:
Proměnné ${ESSID} a ${ESSIDVAR} nejsou k dispozici
ve funkcích predown() a postdown().
|
|