Page 21 of 21 FirstFirst ... 11192021
Results 301 to 305 of 305

Thread: Автоматический реконнект соединения на роутере

  1. #301
    Вот то, что в свое время собирал под похожую задачу(не забываем править пути под свои).
    Итак, раз в 5 минут скрипт пингует заданный адрес и в случае неудачи заносит метку в файл ping2.var. Первый раз 1, затем 2, на 3 раз он уже запускает connector, который выполняет те же манипуляции, что и нажатие кнопок в web интерфейсе disconnect и через задержку connect. В четвертый раз, если пинг снова неудачный, скрипт проверяет "переменную" reboot2.var, в которую метки попадают в случает перезагрузки роутера, и если там занесено 0 перезагружает роутер. Если же 4 раз пинг вернул "положительный ответ", переменная reboot2.var обнуляется и цикл продолжается.

    Для чего перезагрузка. У меня belline/corbina и бывают ситуации когда происходит разрыв сессии после которого реконект не происходит, выдавая ошибку о невозможности отрезолвить адрес шлюза (tp.internet.beeline.ru). В данном случае помогает перезагрузка. Возможно помогло бы просто погасить wan порт и поднять вновь, но я не стал заморачиваться и пошел по пути наименьшего сопративления. Благо происходит это достаточно редко.

    connector:
    Code:
    #!/bin/sh
    case $1 in
        connect)
            service="wan_connect"
            ;;
        disconnect)
            service="wan_disconnect"
            ;;
        *)
            echo "Usage: $(basename $0) connect|disconnect"
            exit 1
            ;;
    esac
    
    let unit=1*$(nvram get wan_unit)
    if [ $unit -lt 0 ]; then
        unit=0
    fi
    nvram set rc_service="$service,$unit"
    kill -SIGUSR1 1
    sleep 2
    ping.sh:
    Code:
    #!/bin/sh
    
    PINGADDRESS='google.com'
    
    while true ; do
        sleep 5m
     if [ ! -e /opt/var/ping2.var ]; then echo 0 > /opt/var/ping2.var; fi
     if [ ! -e /opt/var/reboot2.var ]; then echo 0 > /opt/var/reboot2.var; fi
     var1=`ping -c 3 "$PINGADDRESS" |grep time`
     if [ "$var1" = "" ]; then
         var2=`cat /opt/var/ping2.var`
         case $var2 in
         0)
         echo 1 > /opt/var/ping2.var
         ;;
         1)
         echo 2 > /opt/var/ping2.var
         ;;
         2)
        /usr/local/sbin/connector disconnect
        sleep 3
        /usr/local/sbin/connector connect
         echo 3 > /opt/var/ping2.var
         ;;
         *)
         var3=`cat /opt/var/reboot2.var`
         if [ "$var3" = "0" ]; then
             echo 0 > /opt/var/ping2.var
             echo 1 > /opt/var/reboot2.var
             reboot
         fi
         ;;
         esac
     else
         var2=`cat /opt/var/ping2.var`
         if [ ! "$var2" = "0" ]; then echo 0 > /opt/var/ping2.var; fi
     fi
    
    done
    В post-firewall добавить:
    Code:
    if [ "$2" != "0.0.0.0" ] ; then
        /usr/local/sbin/ping.sh >/dev/null 2>&1 &
    fi
    Необходимо еще по cron'у очищать reboot2.var, например раз в день, что бы уменьшить число перезагрузок роутера.
    clear_reboot.sh
    Code:
    #!/bin/sh
    echo 0 > /opt/var/reboot2.var
    И положить его в \opt\etc\cron.daily
    Last edited by AkuNin; 15-01-2013 at 14:50.
    Netgear WNR3500L V1 @532Mhz:3.0.6-r5110M
    [Ext. USB HDD Box+WD 200Gb SATA]
    [Lighttpd]+[vnstat]+[rrd]+[rTorrent]+[syslog-ng]+[mc]+[Tiny Tiny RSS]+[Accel-ppp]...

  2. #302
    Quote Originally Posted by AkuNin View Post
    Вот то, что в свое время собирал под похожую задачу(не забываем править пути под свои).
    Спасибо, но как я понял эти скрипты будут перегружать сам роутер? или только передергивать соединение?
    Можно немножко подробнее обьяснить. Спасибо.
    ASUS RT-N16 - Linux version 2.6.22.19 - 1.9.2.7-rtn-r4330. Скрипт "Установка программ для чайника" (Новая редакция)

  3. #303
    Quote Originally Posted by AkuNin View Post
    Вот то, что в свое время собирал под похожую задачу(не забываем править пути под свои).
    Итак, раз в 5 минут скрипт пингует заданный адрес и в случае неудачи заносит метку в файл ping2.var. Первый раз 1, затем 2, на 3 раз он уже запускает connector, который выполняет те же манипуляции, что и нажатие кнопок в web интерфейсе disconnect и через задержку connect. В четвертый раз, если пинг снова неудачный, скрипт проверяет "переменную" reboot2.var, в которую метки попадают в случает перезагрузки роутера, и если там занесено 0 перезагружает роутер. Если же 4 раз пинг вернул "положительный ответ", переменная reboot2.var обнуляется и цикл продолжается.

    Для чего перезагрузка. У меня belline/corbina и бывают ситуации когда происходит разрыв сессии после которого реконект не происходит, выдавая ошибку о невозможности отрезолвить адрес шлюза (tp.internet.beeline.ru). В данном случае помогает перезагрузка. Возможно помогло бы просто погасить wan порт и поднять вновь, но я не стал заморачиваться и пошел по пути наименьшего сопративления. Благо происходит это достаточно редко.
    Огромное спасибо за помощь!

    Провел эксперимент:
    Создал файл connector: и прописал в него
    Code:
    #!/bin/sh
    case $1 in
        connect)
            service="wan_connect"
            ;;
        disconnect)
            service="wan_disconnect"
            ;;
        *)
            echo "Usage: $(basename $0) connect|disconnect"
            exit 1
            ;;
    esac
    
    let unit=1*$(nvram get wan_unit)
    if [ $unit -lt 0 ]; then
        unit=0
    fi
    nvram set rc_service="$service,$unit"
    kill -SIGUSR1 1
    sleep 2
    Файл Ping.sh
    имеет вот такой вид:
    Code:
    #!/bin/sh
    
    HOSTS="192.168.2.113"
    COUNT=4
    for myHost in $HOSTS
    do
        count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }'
    )
        if [ $count -eq 0 ]; then
            # 100% failed
            /usr/local/sbin/connector disconnect
            sleep 3
            /usr/local/sbin/connector connect
        fi
    done
    И запустил его. в итоге в логе в веб-морде имеем следующее:
    Code:
    19:54:37 15-01-2013 (emerg|kern|wan) wan: disconnected manually (unit 0)
    19:54:37 15-01-2013 (debug|kern|kernel) vlan2: del **:**:**:**:**:** mcast address from master interface
    19:54:37 15-01-2013 (info|kern|kernel) vlan2: dev_set_allmulti(master, -1)
    19:54:37 15-01-2013 (emerg|kern|client) client: deconfig: lease is lost
    19:54:37 15-01-2013 (info|daemon|dnsmasq) dnsmasq[242]: read /etc/hosts - 3 addresses
    19:54:37 15-01-2013 (info|daemon|dnsmasq-dhcp) dnsmasq-dhcp[242]: read /etc/ethers - 1 addresses
    19:54:37 15-01-2013 (info|daemon|dnsmasq) dnsmasq[242]: using nameserver 193.41.63.182#53
    19:54:37 15-01-2013 (info|daemon|dnsmasq) dnsmasq[242]: using nameserver 193.41.63.181#53
    19:54:42 15-01-2013 (emerg|kern|wan) wan: connected manually (unit 0)
    19:54:45 15-01-2013 (notice|user|root) root: ppp0-ip-up: vnstat ppp0 stats enabled
    19:54:46 15-01-2013 (info|daemon|dnsmasq) dnsmasq[242]: read /etc/hosts - 3 addresses
    19:54:46 15-01-2013 (info|daemon|dnsmasq-dhcp) dnsmasq-dhcp[242]: read /etc/ethers - 1 addresses
    19:54:46 15-01-2013 (info|daemon|dnsmasq) dnsmasq[242]: using nameserver 193.41.63.182#53
    19:54:46 15-01-2013 (info|daemon|dnsmasq) dnsmasq[242]: using nameserver 193.41.63.181#53
    19:54:46 15-01-2013 (emerg|kern|client) client: deconfig: lease is lost
    19:54:47 15-01-2013 (info|daemon|dnsmasq) dnsmasq[242]: read /etc/hosts - 3 addresses
    19:54:47 15-01-2013 (info|daemon|dnsmasq-dhcp) dnsmasq-dhcp[242]: read /etc/ethers - 1 addresses
    19:54:47 15-01-2013 (info|daemon|dnsmasq) dnsmasq[242]: using nameserver 193.41.63.182#53
    19:54:47 15-01-2013 (info|daemon|dnsmasq) dnsmasq[242]: using nameserver 193.41.63.181#53
    19:54:47 15-01-2013 (notice|user|root) root: ppp0-ip-up: vnstat ppp0 stats enabled
    19:54:47 15-01-2013 (emerg|kern|ddns) ddns: IP address has not changed since the last update
    19:54:47 15-01-2013 (info|kern|kernel) vlan2: dev_set_allmulti(master, 1)
    19:54:47 15-01-2013 (emerg|kern|client) client: bound IP : ***.***.*.*** from ***.***.*.***
    19:54:51 15-01-2013 (debug|kern|kernel) vlan2: add **:**:**:**:**:** mcast address to master interface
    Сначала не поверил и запустил 2-й раз. В итоге произошло переподключение.
    Для чего в ping.sh вписал 192.168.2.113 - для того чтоб проверить реакцию на несуществующий адрес в моей сети.
    при замене на ya.ru скрипт отработал без ошибок и без следов в логе. Так что можно его спокойно засовывать в крон и пользовать.
    Этот скрипт только передергивает коннект и не ребутит роутер.
    Last edited by DeadNight; 15-01-2013 at 20:57.
    ASUS RT-N16 - Linux version 2.6.22.19 - 1.9.2.7-rtn-r4330. Скрипт "Установка программ для чайника" (Новая редакция)

  4. #304
    Уважаемые Гуру! На просторах интернета не нашел более подходящего места для решения своей проблемы...
    ОС- Win7X64, тип соединения- PPPoE, роутер- RT-N16, прошивка- 3.0.0.4.260.
    Прошу помощи в организации ре коннекта для смены IP- адреса по требованию качалки USDownloader.
    Спасибо.

  5. #305

    Команды connect/disconnect

    Подскажите пожалуйста команду на подключение/отключение l2tp через терминал.
    Роутер RT-N16 прошивка интузиастов.
    Модераторов очень прошу не переносить мою тему в тему "все команды", т.к. там нет ответа на мой вопрос.

Page 21 of 21 FirstFirst ... 11192021

Similar Threads

  1. DynDNS - настройка динамического DNS
    By Ex0RcISt in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 342
    Last Post: 01-04-2015, 10:18
  2. Replies: 356
    Last Post: 01-01-2013, 23:33
  3. 2 VPN соединения на 1 WAN интерфейсе
    By Cellen in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 60
    Last Post: 06-11-2011, 22:07

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •