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.