cxacru загрузочный скрипт
Наконец у меня дошли руки до той версии драйвера, которую скинул мне LagunaGuardian, за что ему большое спасибо. Оказалось что та сборка отличается от моей не сильно. Основаны они на одной и той же версии драйвера, но моя уже работает, а та не захотела находить оборудование провайдера. Я решил, что разбираться в чем дело не стоит (может быть я просто неправильно ядро собрал). Просто в моей сборкеоказывается тоже есть загрузочный скрипт, но он очень простой и мне не подходит. По этому поводу решил написать свой. Вот он:
В /etc/cxacru добавляем пару параметров
# STRIM (My internet provider) sometimes after disconects thinks that I'm still online, but I'm not. In this case I # have to try reconecting untill special script on server side fixes this situation. PS I got 'wrong password' message # How many times try to execute 'adsl-start' TRY_AUTH=5 # But sometimes it doesn't want to authorize me until I reconect # How many times reinitialize adsl line if adsl-start fails TRY_RECONECT=2
А в /etc/init.d/
#!/sbin/runscript
# Copyright 2005 Guseiniv Alexey (aka KiberGus)
# Distributed under the terms of the GNU General Public License v2
opts="${opts} flash check"
depend() {
provide net
}
checkdrv(){
if lsmod | cut -d' ' -f1 | grep -q -E "^cxacru|cxacrudbg$"; then
return 0
else
return 1
fi
}
checklink(){
if adsl-status | cat | grep -q -m 1 -E "Link is up"; then
return 0
else
return 1
fi
}
start() {
# Get settings
. /etc/cxacru
for ((rec=0; rec < TRY_RECONECT ; rec++))
do
ebegin "Staring cxacru"
if checkdrv; then
einfo "Driver already loaded."
else
/usr/sbin/cxstart.sh service
fi
if checkdrv; then
if ! checklink; then
for ((auth=1; auth < TRY_AUTH; auth++))
do
if checklink; then
break
fi
ewarn "Link is still down. Trying to bring it up."
adsl-start
done
fi
fi
if checkdrv and checklink; then
einfo "Driver is loaded and link is up!"
eend 0
return
fi
# Unloading driver.
stop
done
if checkdrv; then
stop
eerror "I was unable to bring link up."
eend 1
else
eerror "I was unable to launch driver."
eend 1
fi
}
stop() {
ebegin "Stopping cxacru"
/usr/sbin/cxstop.sh service
eend $?
}
restart() {
stop
start
}
# Just reauthorize
flash() {
adsl-stop
start
}
# Sometimes modem can loose conection. This function will check this aspect and if line is down it will restart
# driver
check() {
ebegin "Checking"
if checkdrv and checklink; then
einfo "Driver is loaded and link is up!"
else
ewarn "Conection was lost! Restarting."
start
fi
}
status() {
if lsmod | cut -d' ' -f1 | grep -q -E "^cxacru|cxacrudbg$"; then
if adsl-status | cat | grep -q -m 1 -E "Link is up"; then
einfo $"Driver is loaded and link is up."
RETVAL=0
fi
if adsl-status | cat | grep -q -m 1 -E "Link is down"; then
ewarn $"Driver is loaded but link is down."
RETVAL=1
fi
else
eerror $"Driver not loaded."
RETVAL=1
fi
eend $RETVAL
}
От изначального он отличается следующим:
1) Если не удалось подключиться с первого раза, он делает несколько попыток. Это нужно если произошел дисконект. В таком случает стримовское оборудование думает, что я еще подключен и не пущает, говорит логин и пароль неправильные. Приходится ждать когда у них специальный скрипт меня вычислит и разблокирует.
2) Добавлена опция flash. Переподключается не перезапуская драйвер. Дело в том, что в стиме перерасчет происходит после того, как абонент отключается. Чтобы никто в долг не сидел они отключают пользователя через 24 часа после того, как он подключился. ИМХО у кого-то там руки неправильно растут. Так вот, ставим запуск /etc/init.d/cxacru flash на 5 часов утра и инет работает круглосуточно.
3) Добавлена функция check. Она проверяет, подключен ли компьютер к интернету, и если не подключен, подключается. Можно повесить ее на выполнение раз в n минут, чтобы соединение востанавливалось, если вылетает. А такое бывает и не так уж и редко. Причем случается как правило тогда, когда меня нет дома. Соответственно я прихожу домой и получаю нагоняй за то, что интернета не было весь день.
4) status возвращает не только состояние драйвера (запущен/незапущен) но и состояние соединения (установлено/неустановлено).
Start и stop стандартны. Restart перезапускает все целиком.
ЗЫ Я его еще не успел как следует оттестить, но вроде работает. Жду критики.
- Для комментирования войдите или зарегистрируйтесь

Изменил в цикле
Изменил в цикле условия выхода. Было <=, замнил на <.
Просто чтобы выполнялось указанное число раз, но это не принципиально.
ЗЫ После небольших изменений подойдет и для LAN модемов. Надо убрать подгрузку cxacru.