![]() |
|
|
#1 |
|
Member
|
на всякий случай. Для тех, кто делает соединение 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 Это решает проблему с зависанием 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. |
|
|
|
|
|
#2 |
|
Junior Member
Регистрация: 13.02.2013
Сообщений: 29
Вес репутации: 0 ![]() ![]() ![]() ![]() ![]() ![]() |
Еще можно перед перезагрузкой выгрузить и опять загрузить модуль OHCI / UHCI / EHCI. Перед выгрузкой модуля еще надо прибивать pppd, а то не даст выгрузить. В 90% случаев помогает.
|
|
|
|
|
|
#3 | ||
|
Junior Member
Регистрация: 10.02.2013
Сообщений: 8
Вес репутации: 0 ![]() |
Цитата:
Цитата:
|
||
|
|
|
|
|
#4 |
|
Junior Member
Регистрация: 24.02.2013
Сообщений: 3
Вес репутации: 0 ![]() |
при перевтыкании модема ручками он сам цепляется к сети, но при перевтыкании юсб ресетом не подцепляется
|
|
|
|
|
|
#5 |
|
Junior Member
Регистрация: 10.02.2013
Сообщений: 8
Вес репутации: 0 ![]() |
|
|
|
|
|
|
#6 |
|
Junior Member
Регистрация: 24.02.2013
Сообщений: 3
Вес репутации: 0 ![]() |
Linux OpenWrt 3.3.8 #1 Fri Sep 21 02:58:52 EDT 2012 mips GNU/Linux
|
|
|
|
|
|
#7 |
|
Junior Member
Регистрация: 10.02.2013
Сообщений: 8
Вес репутации: 0 ![]() |
Должен работать. Логи системные и ядра прикрепи на момент зависания модема и после запуска usbreset
|
|
|
|
|
|
#8 |
|
Junior Member
Регистрация: 24.02.2013
Сообщений: 3
Вес репутации: 0 ![]() |
проблема в хабе была
Последний раз редактировалось zzzjyk; 28.02.2013 в 18:00. |
|
|
|
|
|
#9 |
|
Senior Member
Регистрация: 30.05.2011
Возраст: 51
Сообщений: 291
Вес репутации: 0 ![]() |
Как правильней будет послать из 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. |
|
|
|
|
|
#10 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Можно SH скрипт написать
|
|
|
|
![]() |
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|