Скрипт восстановления связи при разрыве соединения PPPoE

Дек 6, 2009 FreeBSD

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

Скрипт расположен по адресу: /usr/home/user/scripts/ppp-restart

ppp-restart

#!/bin/sh -xv

pings=`/sbin/ping -c 3 213.135.97.131 | grep -c «64 bytes»`
if [ $pings -gt 0 ]
then
:
else
/usr/bin/killall ppp
kill -9 `cat /var/run/tun0.pid`
sleep 5
/usr/sbin/ppp -ddial vtc
DATE=`date ‘+%Y-%m-%d %H:%M:%S’`
PPP_RESTART_LOG=/var/log/ppp_restart.log
echo ${DATE} «[ERROR] Not request from 213.135.97.131» >> $PPP_RESTART_LOG
fi

Задание для крона:

*/1 * * * * /bin/sh /usr/home/user/scripts/ppp-restart
ppp.conf

default:
set device PPPoE:re0:vtc
set speed sync
set mru 1492
set mtu 1492
set ctsrts off
set timeout 0 # 3 minute idle timer (the default)
set redial 0 0

enable lqr
set lqrperiod 5

vtc:
set authname мой_логин
set authkey мой_пароль
add default HISADDR

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

2 комментарий к «Скрипт восстановления связи при разрыве соединения PPPoE»
  1. Что то с кавычками проблемы
    pings=»0″;
    echo «OK» >> /var/log/ppp_restart.log
    Вот так правильно

  2. Вот реально рабочий скрипт:
    #!/bin/bash
    pings=»0″;
    a=5;
    pings=`ping -c $a 8.8.8.8 | grep -c «ttl»`
    if [ «$pings» = «$a» ]; then
    echo «OK» >> /var/log/ppp_restart.log
    else
    poff -a
    sleep 5
    pon dsl-provider
    date >> /var/log/ppp_restart.log
    fi
    Этот скрипт хорошо работает если у вас не стабильная сессия. В моем случае это не всегда помогало, тк у меня иногда обрывается именно сеть, и получается так что у меня локалка типа есть, но ни чего не работает. Поэтому просто меняем одну команду
    #!/bin/bash
    pings=»0″;
    a=5;
    pings=`ping -c $a 8.8.8.8 | grep -c «ttl»`
    if [ «$pings» = «$a» ]; then
    echo «OK» >> /var/log/ppp_restart.log
    else
    /etc/init.d/networking restart
    date >> /var/log/ppp_restart.log
    fi
    и перезагружаем всю сеть если у нас пропал инет.

Добавить комментарий для Anton Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: