URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 94411
[ Назад ]

Исходное сообщение
"скрипт для поднятие подключения (интерфейса)"

Отправлено dELiTe , 26-Фев-13 14:14 
добрый день.
хочу совет получить, т.к. сам знаю мало
Нужен скрипт, общее описание:
1) проверяет наличие присутствия интрефейса ppp каждую минуту (на данный момент реализовано)
---------------------------------------------------------------
exec >> /var/log/adsl_debug 2>> /var/log/adsl_debug

if (!  /sbin/ifconfig ppp999); then
    /usr/bin/poff dsl-provider    
    sleep 5
    /usr/bin/pon dsl-provider

    echo `date` -- ADSL is down >> /var/log/adsl_down
fi
---------------------------------------------------------------
Скрипт работает.

2) Есть косяк с разрывом подключения , косяк скорее всего на стороне прова.

На дебиане следующий лог наблюдаю:
1) сначало рвется (незнаю почему)
Feb 26 06:16:13 gw-server pppd[21776]: LCP terminated by peer
Feb 26 06:16:13 gw-server pppd[21776]: Connect time 1440.1 minutes.
Feb 26 06:16:13 gw-server pppd[21776]: Sent 792166927 bytes, received 1160567468 bytes.
Feb 26 06:16:16 gw-server pppd[21776]: Connection terminated.
Feb 26 06:16:16 gw-server pppd[21776]: Modem hangup
Feb 26 06:17:01 gw-server pppd[21776]: Terminating on signal 15
Feb 26 06:17:01 gw-server pppd[21776]: Exit.
2) затем попытка подключения
Feb 26 06:17:12 gw-server pppd[14134]: Plugin rp-pppoe.so loaded.
Feb 26 06:17:12 gw-server pppd[14135]: pppd 2.4.4 started by root, uid 0
Feb 26 06:17:12 gw-server pppd[14135]: PADS: System-Error: AC: Cannot open PPPoE session.
Feb 26 06:17:12 gw-server pppd[14135]: Exit.
Feb 26 08:21:11 gw-server pppd[3981]: Plugin rp-pppoe.so loaded.
Feb 26 08:21:11 gw-server pppd[3982]: pppd 2.4.4 started by root, uid 0
Feb 26 08:21:46 gw-server pppd[3982]: Timeout waiting for PADO packets
Feb 26 08:21:46 gw-server pppd[3982]: Unable to complete PPPoE Discovery


При подключении через ноут с виндой (от оборудования оператора) - ошибка 772 выскакивает (Аппаратура удаленного компьютера несовместима с типом запрашиваемого вызова).
Причем заметил, что если тыкать на переподключение (кнопку) - то на 15 раз (не обязательно, смысл в том что если тыкать много) подключится.
Оператор не видит мои 14 попыток, видит только 15 успешную. Пришли к выводу что пакеты где то не проходят (возможно на коммутаторе оператора).
На дебиане тоже, если жать постоянно pon dsl-provider - подключится.
Так вот это дело (пока проблема не решится хочу автоматизировать в виде скрипта)

Поэтому, рискну предположить такой вид скрипта:
---------------------------------------------------------------
exec >> /var/log/adsl_debug 2>> /var/log/adsl_debug

if (!  /sbin/ifconfig ppp999); then
    /usr/bin/poff dsl-provider    
    sleep 5
    /usr/bin/pon dsl-provider
    sleep 5
      if (!  /sbin/ifconfig ppp999); then
        while ( /sbin/ifconfig ppp999 ) - здесь неверно (т.к. я ниразу не писал скрипт, взял по аналогии с IF) , нужно что б была проверка интерфейса - пока его нет выполнять действия
          do
           pon dsl-provider
           sleep 1    
          done
      fi
    echo `date` -- ADSL is down >> /var/log/adsl_down
fi
---------------------------------------------------------------

Смысл в том, 1 раз в минуту по крону идет проверка, если интерфейса нет, то происходит подключение, если после этого нет интерфейса - то подключение каждую секунда пока не появится интерфейс... Вот такой геморой.
Может кто подсказать по сему?


Содержание

Сообщения в этом обсуждении
"скрипт для поднятие подключения (интерфейса)"
Отправлено dELiTe , 26-Фев-13 16:38 
>[оверквотинг удален]
>      sleep 1
>     done
>       fi
>     echo `date` -- ADSL is down >> /var/log/adsl_down
> fi
> ---------------------------------------------------------------
> Смысл в том, 1 раз в минуту по крону идет проверка, если
> интерфейса нет, то происходит подключение, если после этого нет интерфейса -
> то подключение каждую секунда пока не появится интерфейс... Вот такой геморой.
> Может кто подсказать по сему?

вот вариант такой:
if (!  /sbin/ifconfig ppp999); then
    /usr/bin/poff dsl-provider    
    sleep 5
    i=0
    while [ $i -lt 40 ]
     do
        pon dsl-provider
        if ( /sbin/ifconfig ppp999 ); then (вот тут не совсем уверен, т.к. ! знак вроде как означает инвентирования условия, - поэтому если интерфейс есть - то выход из цикла
           break        
        fi
        sleep 1
        i=$[$i+1]
     done
    echo `date` -- ADSL is down >> /var/log/adsl_down
fi


Правильно ли?


"скрипт для поднятие подключения (интерфейса)"
Отправлено aaa , 26-Фев-13 18:50 
>[оверквотинг удален]
>      sleep 1
>     done
>       fi
>     echo `date` -- ADSL is down >> /var/log/adsl_down
> fi
> ---------------------------------------------------------------
> Смысл в том, 1 раз в минуту по крону идет проверка, если
> интерфейса нет, то происходит подключение, если после этого нет интерфейса -
> то подключение каждую секунда пока не появится интерфейс... Вот такой геморой.
> Может кто подсказать по сему?

Зачем изобретать велосипед?
Читать http://wiki.debian.org/ru/pptp-linux

параметр persist - для переподключения после обрыва подключения
обратить внимание на папки /etc/ppp/ip-up.d/ /etc/ppp/ip-down.d/
и файлы /etc/ppp/ip-up /etc/ppp/ip-down


"скрипт для поднятие подключения (интерфейса)"
Отправлено LSTemp , 28-Фев-13 14:15 
> параметр persist - для переподключения после обрыва подключения
> обратить внимание на папки /etc/ppp/ip-up.d/ /etc/ppp/ip-down.d/
> и файлы /etc/ppp/ip-up /etc/ppp/ip-down

угу, кроме этого еще для проверки живого соединения существуют еще опции
lcp-echo-interval и lcp-echo-failure.