ADSL авто-востоновление

Здрасти :)
Установил драйвера на D-Link adsl - 200
вот по этой инструкции http://gentoo.ru/node/807
все вроде работает....
Вопрос как сделать чтобы когда разрывает соединение(падат интерфейс tap0)
оно автоматически востанавливалось.
Если кто знает подскажите. желательно по подробней.

Делал помнится

Делал помнится диалап, давно правда..Есть такая штука как крон. Надо написать небольшой скриптик. Скриптик должен:
1) проверить соединение (ifconfig ...| grep или как нить еще)
2) ежели соединения нет - окончательно все уронить (ну там модули ежели надо перегрузить, связь якобы разорвать и тп) и запустить по новой. Как это делать с вашим модемом прописано в том же мануале что вы привели.

Скрипт прописываем в крон, таким макаром чтоб запускался кажные ..сколько надо.. минут. Все.

Re: Делал помнится

Хотелось бы обойтись без крона, это возможно ?

При настройке

При настройке rp-pppoe он что-то спрашивает про подключение on demand. Возможно это подойдет.

>>Хотелось бы

>>Хотелось бы обойтись без крона, это возможно ?

Возможно. Ежели скрипт постоянно сидит в памяти и по таймауту проверяет живучесть. Крон это делает лучше всех, и сам скрипт будет проще и понятней, кроме того он полезени в принципе при выполнении рутинных задач, типа проверки почты, анализа и рассылок логов и т.д. Почему бы дополнительно не заставить его проверять падучую шелезяку?

У меня aus linx a 2006.

У меня aus linx a 2006. В итоге набрасал скрипт, который поместил в /etc/init.d
Кроме стандарныъ start stop restart status сделал там check.
А потом при помощи крона раз в сутки запускаю restart (у меня провайдер раз в сутки соединение сбрасывает) и раз в 10 минут check, который востанавливает соединение, если оно разорвалось.
ЗЫ Скрипт немного кривой, т.е. что-то в нем работает не так, но случается это очень редко, поэтому отдебажить сложно. Могу его сюда скинуть.

Re: У меня aus linx a 2006.

KiberGus написал(а):
Скрипт немного кривой, т.е. что-то в нем работает не так, но случается это очень редко, поэтому отдебажить сложно. Могу его сюда скинуть.

ok, выложите скрипт попробую.

Скрипт писался

Скрипт писался для связки драйвер cxacru и rp-pppoe
Сам скрипт /etc/init.d/cxacru

#!/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 or checklink; then
    ewarn "Conection was lost! Restarting."
    start
else
    einfo "Driver is loaded and link is up!"
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
}

И пару переменных я добавил в /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

Если у вас LAN модем, то надо заменить команды
/usr/sbin/cxstart.sh
/usr/sbin/cxstop.sh
на аналогичные, которые отвечают за установление связи с оборудованием провайдера (это когда лампочка adsl загорается). Ну или убрать их вообще, если модем делает это самостоятельно.
ЗЫ Возможно имеет смысл завести дополнительные переменные, где хранить, какие команды выполнять, чтобы скрипт работал для всех модемов.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".