de_boer писал(а):
настройки в режиме роутера... где какие галочки выставить?
Здесь или
Здесь все на русском и в картинках
ilovedlink писал(а):
ссылка недействительна... где бы это всё скачать?
В скриптах можно задавать временнЫе параметры действий, которые (по моему мнению) должны рулить работой девайса, а также кол-во этих действий. Сделан режим "сна", тоесть если после последовательного передёргивания ppp, затем adsl соединения да плюс еще ребута (для верности), модем так и не вылез в интернет, то скрипт "засыпает" на указанное в настройках время(переждать шторм). Допустимые кол-ва каждого из эти трех действий тоже вынесены в настройки. Попробуем теперь не злить технику провайдера.
router_monitor.bat для режима "
маршрутизатор"
Код:
@echo off
:common
set mdm=192.168.1.1 rem * Локальный ip-адрес модема
set srv1=myserver1.com rem * Первый пингуемый сервер
set srv2=myserver1.com rem * Второй пингуемый сервер
set ptime=180 rem * Таймаут межу проверками серверов (секунды)
set pppdown=60 rem * Время, достаточное для "завала" РРР-сессии (секунды)
set pppup=60 rem * Время, достаточное для установления РРР-сессии (секунды)
set adsldown=20 rem * Время, достаточное для "отвала" adsl-соединения (секунды)
set adslup=60 rem * Время, достаточное для установления adsl-соединения (секунды)
set rbootup=200 rem * Время, достаточное для ребута модема+поднятие adsl-соединения+ подъём РРР (секунды)
set tosleep=180 rem * Время, на которое скрипт "засыпает", если превышено кол-во ребутов модема (секунды)
set maxrppp=1 rem * Кол-во переподключений РРР перед переходом к "передёргиванию" adsl-соединения
set maxradsl=1 rem * Кол-во "передёргиваний" adsl-соединения перед переходом к перезагрузке модема
set maxrboot=1 rem * Кол-во перезагрузок модема, устанавливающее режим "засыпания" скрипта.
:reset
set numrppp=0 rem * Сброс счётчика кол-ва rppp
set numradsl=0 rem * Сброс счётчика кол-ва radsl
set numrboot=0 rem * Сброс счётчика кол-ва rppp
:check
for /f "tokens=2 delims=:" %%i in ('route print') do set dgway=%%i rem * Узнаем шлюз по умолчанию
set dgway=%dgway: =% rem * Запись шлюза по умолчанию в переменную %dgway%
if %mdm% NEQ %dgway% (goto routes) rem * Если шлюз по умолчанию был не = IP модема, то исправляем.
set server=%srv1% rem * Заносим в переменную проверочный сервер №1
ping -n 2 -w 1000 %server% >nul && goto fake rem * Если отклик от сервера №1 получен, то преходим к проверке
set server=%srv2% rem * Если отклик от сервера №1 не получен, то пошел сервер №2
ping -n 2 -w 1000 %server% >nul || goto limit rem * Пингуем на доступность сервер №2
:fake
ping -n 2 -w 1000 %server% | findstr /i %dgway% >nul && goto reboot rem * В отчете ping.exe ищем строку, содержащую IP модема
rem * Если находим, то отклик от проверочного сервера "левый"
set count=%ptime%
:info rem * Если хотя бы один из тест-серверов пинговался правильно, то показ info
set /a in=%count%-1
ping -n 2 127.0.0.1 >nul
cls
set count=%in%
echo [==========================] rem * Вывод разделителя
echo Server : %server% rem * Вывод информации о Ip текущего доступного тестового сервера
echo Pause : %ptime% sec. rem * Вывод информации о времени задержки между проверками серверов
echo Gateway : %dgway% rem * Текущий шлюз по умолчанию ( равен локальному IP модема )
echo [==========================] rem * Вывод разделителя
echo Remain : %in% sec. rem * Вывод обратного отсчёта
if %in% EQU 0 (goto reset) rem * Контроль паузы между проверками тестовых серверов
goto info rem * Если не нуль - считаем дальше
:limit rem * Если сервера не пингуются, или от них приходит "левый" отклик...
if %numrboot% EQU %maxrboot% (goto sleep) rem * Если макс. кол-во ребутов уже было, то переходим в режим "sleep"
if %numradsl% EQU %maxradsl% (goto reboot) rem * Если макс. кол-во radsl уже было, то переходим в режим "reboot"
if %numrppp% GEQ %maxrppp% (goto radsl) rem * Если макс. кол-во rppp уже было, то переходим в режим "radsl"
:rppp
tst10.exe /r:ppp_down.txt rem * Рвём ppp-соединение тельнет-клиентом
ping -n %pppdown% 127.0.0.1 >nul rem * Пауза, достаточная для разрыва ppp-сессии
tst10.exe /r:ppp_up.txt rem * Поднимаем ppp-соединение тельнет-клиентом
ping -n %pppup% 127.0.0.1 >nul rem * Пауза, достаточная для установления ppp-соединения
echo %date%--%time% - redialed >>errors.txt rem * Заносим дату и время, а также само событие рестарта ppp в отчет
echo ---------------------------------- >>errors.txt rem * Заносим раделительную линию в отчет
set /a numrppp+=1 rem * Увеличиваем счетчик рестартов ppp на еденицу (1)
goto check rem * Идем проверяться - принес ли результат рестарт ppp
:radsl
tst10.exe /r:adsl_stop.txt rem * Рвём adsl-линк тельнет-клиентом
ping -n %adsldown% 127.0.0.1 >nul rem * Пауза, достаточная для отвала adsl
tst10.exe /r:adsl_start.txt rem * Поднимаем adsl-линк тельнет-клиентом
ping -n %adslup% 127.0.0.1 >nul rem * Пауза, достаточная для установления adsl-соединения
echo %date%--%time% - reconnected >>errors.txt rem * Заносим дату и время, а также само событие рестарта adsl в отчет
echo ---------------------------------- >>errors.txt rem * Заносим раделительную линию в отчет
set /a numradsl+=1 rem * Увеличиваем счетчик рестартов adsl на еденицу (1)
goto rppp rem * Идем проверяться - принес ли результат рестарт adsl
:reboot
start tst10.exe /r:reboot.txt rem * Запуск телнет-клиента в "фоновом режиме" и отработка перезагрузки модема
ping -n 11 127.0.0.1 >nul rem * Время для того, чтобы модем отработал начальную процедуру(около 10 сек)
taskkill /f /im tst10.exe >nul rem * "Убиваем" фоновый процесс телнет-клиента по имени процесса
ping -n %rbootup% 127.0.0.1 >nul rem * Время, достаточное для того, чтобы модем полностью ребутнулся + подъем adsl и ppp
echo %date%--%time% - rebooted >>errors.txt rem * Заносим дату и время, а также само событие ребута в отчет
echo ---------------------------------- >>errors.txt rem * Заносим разделительную линию в отчет
set /a numrboot+=1 rem * Увеличиваем счетчик ребутов на единицу (1)
goto rppp rem * Идем проверятся - принес ли результат ребут модема
:sleep rem * Если после макс.кол-ва ребутов модем не вышел в интернет, то спим..
cls
echo %date%--%time% - Sleep >>errors.txt
echo ---------------------------------- >>errors.txt
set count=%tosleep%
set dgway=ERROR - SLEEP %tosleep% sec.
goto info
:routes
route add 0.0.0.0 mask 0.0.0.0 %mdm% metric 1 rem * Если шлюз по умолчанию не равен IP-модема, то исправляем
goto common rem * После добавления\исправления маршрута начинаем всё с самого начала...
Скрипт, мониторящий модем в режиме
Bridge (моста):
Код:
@echo off
:common
set mdm=192.168.1.1
set srv1=myserver1.com
set srv2=myserver2.com
set ptime=180
set adsldown=15
set adslup=45
set rbootup=90
set maxrppp=2
set maxradsl=1
set maxrboot=1
set tosleep=180
set conname=ISP
set login=xxx_xxx@dsl.xxxx.net
set passw=1234567890
:reset
set numrppp=0
set numradsl=0
set numrboot=0
:kick
route delete 0.0.0.0 mask 0.0.0.0 %mdm%
cls
:check
echo Waiting for Check results.....
set server=%srv1%
ping -n 2 -w 1000 %server% >nul && goto fake
set server=%srv2%
ping -n 2 -w 1000 %server% >nul || goto limit
:fake
ping -n 1 -w 1000 %server% | findstr /i "%mdm%" >nul && goto reboot
:gateway
for /f "tokens=2 delims=:" %%i in ('route print') do set dgway=%%i
set dgway=%dgway: =%
set count=%ptime%
:info
set /a in=%count%-1
ping -n 2 127.0.0.1 >nul
cls
set count=%in%
echo [=========================]
echo Server : %server%
echo Timeout : %ptime% sec.
echo Gateway : %dgway%
echo [=========================]
echo Remain : %in% sec.
if %in% EQU 0 (goto reset)
goto info
:limit
if %numrboot% EQU %maxrboot% (goto sleep)
if %numradsl% EQU %maxradsl% (goto reboot)
if %numrppp% GEQ %maxrppp% (goto radsl)
:rppp
cls
rasdial %conname% /DISCONNECT >nul
ping -n 5 127.0.0.1 >nul
rasdial %conname% %login% %passw%
echo %date%--%time% - Redialed >>errors.txt
echo ---------------------------------- >>errors.txt
set /a numrppp+=1
goto check
:radsl
tst10.exe /r:adsl_stop.txt
ping -n %adsldown% 127.0.0.1 >nul
tst10.exe /r:adsl_start.txt
ping -n %adslup% 127.0.0.1 >nul
echo %date%--%time% - Reconnected >>errors.txt
echo ---------------------------------- >>errors.txt
set /a numradsl+=1
goto rppp
:reboot
start tst10.exe /r:reboot.txt
ping -n 10 127.0.0.1 >nul
taskkill /F /T /IM tst10.exe >nul
cls
sleep %rbootup%
echo %date%--%time% - Rebooted >>errors.txt
echo ---------------------------------- >>errors.txt
set /a numrboot+=1
goto rppp
:sleep
cls
echo %date%--%time% - Sleep >>errors.txt
echo ---------------------------------- >>errors.txt
set count=%tosleep%
set dgway=ERROR - SLEEP %tosleep% sec.
goto info

В Имени соединения созданного в windows не используйте кириллицу.

Конфиги телнет-клиента tst10.exe настроены на Login=
admin и Pass=
1234
Заменяем их на свои аккуратно, ибо синтаксис конфигов учитывет даже кол-во пробелов в строке.
Все в комплекте можно скачать здесь:
AUTOREBOOT.zip

В архивe:
1. Cкрипты для Bridge и Router.
2. Клиент
tst10.exe + готовые шаблоны для него
Коментарии (помеченные
rem ) из скриптов необходимо аккуратно убрать.
p.s. На вопросы буду отвечать только по не "перекроенным" скриптам. Если взялись переделывать - значит сами понимаете что к чему...
