Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > OpenWRT/LEDE

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.02.2013, 16:51   #1
goldskif
Member
 
Регистрация: 05.11.2012
Сообщений: 36
Вес репутации: 0
goldskif is an unknown quantity at this point
Отправить сообщение для goldskif с помощью ICQ Отправить сообщение для goldskif с помощью Skype™
По умолчанию Авторебут 3G соединения

на всякий случай. Для тех, кто делает соединение 3G
Решение проблемы зависания соединения
Обычно предлагают проверять пингом какого-нибудь сервера
Создаем файл
Код:
touch /bin/tester.sh
chmod 755 /bin/tester.sh
Сам файл
Код:
#!/bin/sh
    if ! ping -q -c 2 -W 6 beeline.ru > /dev/null; then
       ifdown wan
     sleep 10
       reboot &
    else
        echo "PING OK"
    fi
Добавляем задания в крон

Код:
/etc/init.d/cron stop
echo "*/5 * * * * /bin/tester.sh" >> /etc/crontabs/root
/etc/init.d/cron enable
/etc/init.d/cron start
Cron теперь настроен на запуск скрипта каждые 5 минут.
Это решает проблему с зависанием 3G подключения.
Скрипт пингует адрес "beeline.ru", если отклика нет, то сперва разъединяет подключение "3g" на случай, если оно зависло, далее ждёт 10 секунд, и соединяет "3g" подключение.
---
Но это решение было не слишком надежно.
Как оказалось, модем при таком подключении не всегда заново подключался. Помогал только ребут.
Да и проверять по пингу не совсем надежно. Вдруг сервер просто завис, например.
Проще проверять по наличию в ifconfig - 3G интерфейса. Когда связь отваливается - он пропадает тоже.

Код:
#!/bin/sh
TEST_WAN="`ifconfig | grep 3g | cut -b 1`"
    if [ "$TEST_WAN" = 3 ]; then
#        echo "3G-WAN OK"
        logger "3G router OK"
    else
        reboot && exit
    fi

Последний раз редактировалось goldskif; 13.02.2013 в 16:59.
goldskif вне форума   Ответить с цитированием
Старый 13.02.2013, 23:47   #2
mcsa
Junior Member
 
Регистрация: 13.02.2013
Сообщений: 29
Вес репутации: 0
mcsa is a splendid one to beholdmcsa is a splendid one to beholdmcsa is a splendid one to beholdmcsa is a splendid one to beholdmcsa is a splendid one to beholdmcsa is a splendid one to behold
По умолчанию

Еще можно перед перезагрузкой выгрузить и опять загрузить модуль OHCI / UHCI / EHCI. Перед выгрузкой модуля еще надо прибивать pppd, а то не даст выгрузить. В 90% случаев помогает.
mcsa вне форума   Ответить с цитированием
Старый 15.02.2013, 18:49   #3
Rusink
Junior Member
 
Регистрация: 10.02.2013
Сообщений: 8
Вес репутации: 0
Rusink is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от goldskif Посмотреть сообщение

Код:
#!/bin/sh
TEST_WAN="`ifconfig | grep 3g | cut -b 1`"
    if [ "$TEST_WAN" = 3 ]; then
#        echo "3G-WAN OK"
        logger "3G router OK"
    else
        reboot && exit
    fi
А зачем сразу перезагружать роутер, когда можно подгрузить usbreset и "передергивать" им модем?

Цитата:
usbreset PPPP:VVVV - reset by product and vendor id
usbreset BBB/DDD - reset by bus and device number
usbreset \"Product\" - reset by product name
Rusink вне форума   Ответить с цитированием
Старый 24.02.2013, 09:06   #4
zzzjyk
Junior Member
 
Регистрация: 24.02.2013
Сообщений: 3
Вес репутации: 0
zzzjyk is an unknown quantity at this point
По умолчанию

при перевтыкании модема ручками он сам цепляется к сети, но при перевтыкании юсб ресетом не подцепляется
zzzjyk вне форума   Ответить с цитированием
Старый 25.02.2013, 00:12   #5
Rusink
Junior Member
 
Регистрация: 10.02.2013
Сообщений: 8
Вес репутации: 0
Rusink is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от zzzjyk Посмотреть сообщение
при перевтыкании модема ручками он сам цепляется к сети, но при перевтыкании юсб ресетом не подцепляется
Версия ядра какая? На последних версиях есть проблема с монтированием usbfs, соответственно может не работать usbreset
Rusink вне форума   Ответить с цитированием
Старый 25.02.2013, 18:50   #6
zzzjyk
Junior Member
 
Регистрация: 24.02.2013
Сообщений: 3
Вес репутации: 0
zzzjyk is an unknown quantity at this point
По умолчанию

Linux OpenWrt 3.3.8 #1 Fri Sep 21 02:58:52 EDT 2012 mips GNU/Linux
zzzjyk вне форума   Ответить с цитированием
Старый 26.02.2013, 00:23   #7
Rusink
Junior Member
 
Регистрация: 10.02.2013
Сообщений: 8
Вес репутации: 0
Rusink is an unknown quantity at this point
По умолчанию

Должен работать. Логи системные и ядра прикрепи на момент зависания модема и после запуска usbreset
Rusink вне форума   Ответить с цитированием
Старый 26.02.2013, 03:26   #8
zzzjyk
Junior Member
 
Регистрация: 24.02.2013
Сообщений: 3
Вес репутации: 0
zzzjyk is an unknown quantity at this point
По умолчанию

проблема в хабе была

Последний раз редактировалось zzzjyk; 28.02.2013 в 18:00.
zzzjyk вне форума   Ответить с цитированием
Старый 22.05.2013, 12:21   #9
St@rz
Senior Member
 
Регистрация: 30.05.2011
Возраст: 49
Сообщений: 291
Вес репутации: 0
St@rz is on a distinguished road
По умолчанию

Как правильней будет послать из openwrt команду (reboot) в роутер (192.168.1.1) для его перезагрузки?

У меня сейчас инет по DSL. На Windows в автозагрузке сейчас работает программа со следующим кодом:

Код:
 ; Компилятор - PureBasic 4.51.

ProgramFilename.s=ProgramFilename() ; Имя и путь к исполняемому файлу данной программы
ProgName.s=GetFilePart(ProgramFilename)
a = CreateSemaphore_(#Null,0,1,@ProgName) ; Если прога уже запущена, то завершаем работу этой копии программы.
If a<>0 And GetLastError_()=#ERROR_ALREADY_EXISTS
  MessageRequester(ProgName, "Программа уже запущена", #MB_OK|#MB_ICONWARNING)
  CloseHandle_(a) 
  End
EndIf

InitNetwork()

Procedure.s SendModemData(Connect, Command.s)
  Protected Result.s="", Count=0, x
  Command=Command+Chr(13)+Chr(10)
  SendNetworkData(Connect, @Command, Len(Command))
  Repeat
    Delay(20)
    If NetworkClientEvent(Connect)=#PB_NetworkEvent_Data
      *mem=AllocateMemory(10000)
      If *mem
        ReceiveNetworkData(Connect,*mem,10000)
        In.s=PeekS(*mem)
        FreeMemory(*mem)
        Result=Result+In
      EndIf
    EndIf
    Count+1
  Until Count>=80
  ProcedureReturn Result
EndProcedure


Procedure RestartModem()
  Connect=OpenNetworkConnection("192.168.127.1", 23)
  If Connect
    Delay(100)
    SendModemData(Connect, "admin") ; Логин модема.
    Delay(1000)
    SendModemData(Connect, "admin") ; Пароль модема.
    Delay(1000)
    SendModemData(Connect, "reboot") ; Команда перезагрузки модема.
    Delay(4000)
    CloseNetworkConnection(Connect)
  EndIf
EndProcedure

Repeat
  Delay(30000) ; 30 секунд ожидания.
  x1=0 : x2=0
  Connect=OpenNetworkConnection("www.google.com", 80)
  If Connect
    x1=1
    CloseNetworkConnection(Connect)
  EndIf
  Delay(1000)
  Connect=OpenNetworkConnection("www.ya.ru", 80)
  If Connect
    x2=1
    CloseNetworkConnection(Connect)
  EndIf
  
  If x1=0 And x2=0
    RestartModem()
    For i=1 To 20
      Delay(10000) ; 200 секунд ожидания. Необходимо чтобы модем успел перезагрузиться.
    Next i
  EndIf
ForEver

Последний раз редактировалось St@rz; 22.05.2013 в 12:36.
St@rz вне форума   Ответить с цитированием
Старый 22.05.2013, 13:12   #10
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Можно SH скрипт написать
Admin вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 12:50. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика