|
1.
Стандартные функции-обработчики
Можно определить четыре функции, которые вызываются при операциях запуска
(start) и останова (stop). При вызове функциям передается
название интерфейса, так что одна и та же функция может управлять несколькими
адаптерами.
Для указания на то, что запуск или останов интерфейса может продолжаться,
возвращаемое значение функций preup() и predown() должно быть
нулевым (успешным). Если preup() возвращает ненулевое значение,
запуск интерфейса прерывается. Если predown() возвращает ненулевое
значение, не допускается продолжение останова интерфейса.
Возвращаемыое значение функций postup() и postdown() игнорируется,
так как показываемая ими ошибка не обрабатывается.
${IFACE} присваивается название запускаемого/останавливаемого
интерфейса. ${IFVAR} — это значение ${IFACE},
преобразованное в имя переменной, разрешенное в bash.
Листинг 1.1: Примеры функций до/после запуска/останова |
preup() {
if mii-tool ${IFACE} 2> /dev/null | grep -q 'no link'; then
ewarn "Интерфейс ${IFACE} не подключен, прерывание запуска"
return 1
fi
if ethtool ${IFACE} | grep -q 'Link detected: no'; then
ewarn "Интерфейс ${IFACE} не подключен, прерывание запуска"
return 1
fi
return 0
}
predown() {
if is_net_fs /; then
eerror "Корневая ФС смонтирована в сети - останов ${IFACE} невозможен"
return 1
fi
return 0
}
postup() {
return 0
}
postdown() {
return 0
}
|
1.
Функции-обработчики wireless tools
Примечание:
Это не работает вместе с WPA Supplicant, но переменные ${ESSID} и
${ESSIDVAR} доступны в функции postup().
|
Можно определить две функции, вызываемые до и после функции подключения
(associate). При вызове им сначала передается название интерфейса, так
что одна и та же функция может управлять несколькими адаптерами.
Для указания на то, что запуск или останов интерфейса можно продолжать,
возвращаемое значение функции preassociate() должно быть нулевым
(успешным). Если preassociate() возвращает ненулевое
значение, запуск интерфейса прерывается.
Возвращаемое значение функции postassociate() игнорируется,
так как показываемая ей ошибка не обрабатывается.
${ESSID} присваивается точный ESSID точки доступа, к которой вы
подключаетесь. ${ESSIDVAR} — это ${ESSID}, преобразованный
в имя переменной, разрешенное в bash.
Листинг 1.1: Функции до/после соединения |
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 "Для поддержки LEAP, выполните emerge net-misc/cisco-aironet-client-utils"
return 1
fi
einfo "Ожидание допуска LEAP на \"${ESSID//\\\\//}\""
if /opt/cisco/bin/leapscript ${user} ${pass} | grep -q 'Login incorrect'; then
ewarn "Вход пользователя ${user} не удался"
return 1
fi
fi
return 0
}
postassociate() {
return 0
}
|
Примечание:
${ESSID} и ${ESSIDVAR} недоступны в функциях predown() и
postdown().
|
|