imho.ws |
![]() |
![]() |
![]() |
# 1 |
Newbie
Регистрация: 31.10.2002
Сообщения: 27
![]() |
![]()
Собственно, нужно следущие, пинать извне мой ройтер, скажем раз в 15 минут, на предмет наличия тыранета.
Имеем Asus WL-500gP v2 - Tomato Firmware v1.28.8754 ND USB Ext Провайдер с статическим IP, *IMSYS он еще на кой то хрен отключил наружу ping, trace.. Ужас. Хых, Как это сделать грамотно? Не обязательно даже такую схему реализовывать, суть мне нужно проверить именно стабильность доступа. |
![]() |
![]() |
# 2 |
СуперМод
IMHO Консультант 2005-2009 Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 478
![]() |
IMHO.ws Connect Checker 1.0
MarkXIII, чтобы "пинать извне" - нужно иметь какой-то порт открытым наружу (и проброшенным на роутере вовнутрь).
Дальше на этот порт вешается (к примеру) веб-сервис с каким-нить небольшим файликом (пары байт в принципе достаточно). Дальше с внешнего (по отношению ко всей конструкции) компа обычным GNU Wget по шедулеру тягаешь тот самый файлик, отписываешь в лог-файл время и результат (удачно/неудачно), удаляешь файлик чтоб не мешал, при необходимости выполняешь какие-то ещё действия. Как вариант - "какой-то сервис" может висеть и на роутере. Как ещё один вариант - логи может вести и веб-сервер. Как ещё один вариант - wget может работать изнутри (в т.ч. и на роутере), а файлик качать с внешнего сервиса (www.microsoft.com:80/index.html весит Если изнутри на машине стоит XP (на других Win не сработает) - можно вместо wget использовать встроенный netsh (netsh diag connect iphost www.microsoft.com 80). В отличие от wget - для netsh не нужен никакой файлик, проверяется возможность соединения и только. <Добавлено утром> Собственно, вариант "комп с Win за роутером, сервер снаружи" checker.cmd Код:
set REMOTEURL=ftp://ftp.mozilla.org/index.html set WORKFOLDER=c:\checker set LOGFILE=%WORKFOLDER%\checker.log set WGETPROG=%WORKFOLDER%\wget.exe %WGETPROG% --output-document=%WORKFOLDER%\foo.html %REMOTEURL% && call :PASSED ||call :FAILED goto :EOF :PASSED REM есть коннект 1>>%LOGFILE% echo Passed at %DATE% %TIME% del /q %WORKFOLDER%\foo.html goto :EOF :FAILED REM нет коннекта REM сюда можно добавить команду переинициализации соединения 1>>%LOGFILE% echo Epic fail at %DATE% %TIME% goto :EOF Код:
schtasks /create /RU SYSTEM /SC MINUTE /MO 15 /ST 00:00:01 /TR "c:\checker\checker.cmd" /TN "IMHO.ws Connect Checker" ![]()
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила! Распространенье наше по планете Особенно заметно вдалеке: В общественном парижском туалете Есть надписи на русском языке В. Высоцкий Последний раз редактировалось Borland; 08.11.2011 в 10:06. Причина: Добавлен пример |
![]() |
![]() |
# 3 |
СуперМод
IMHO Консультант 2005-2009 Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 478
![]() |
IMHO.ws Connect Checker 2.0
Возвращаясь к напечатанному.
![]() Счастливым владельцам роутеров DLINK посвящается. Впрочем, будет работать и на других роутерах с *NIX-based прошивкой. ![]() На этот раз решалась задача "проверить наличие интернета и при отсутствии такового перезагрузить роутер". Для решения задачи использован единственный несистемный компонент - freeware библиотечка w3sockets для организации telnet-сесcии в скрипте. Идея почерпнута отсюда. Скрипт проверяет соединение с SMTP-сервером gmail на порт 25, при удачном соединении в лог пишется "Passed at <дата и время>", при неудачном роутеру отправляется команда на перезагрузку и в лог пишется "Epic fail at <дата и время>. Router rebooted". Checker2.cmd Код:
@set @script=0 /* @echo off set @script= set "WORKFOLDER=c:\checker2" set "LOGFILE=%WORKFOLDER%\checker.log" reg query "HKCR\Socket.TCP" && set "W3SOCKET=INSTALLED" || set "W3SOCKET=NOT_INSTALLED" if "%W3SOCKET%"=="NOT_INSTALLED" regsvr32 /s Socket.dll || exit /b if "%PROCESSOR_ARCHITECTURE%"=="AMD64" %windir%\syswow64\cscript //nologo //e:jscript "%~dpnx0"|find /i "220" && call :PASSED || call :FAILED if "%PROCESSOR_ARCHITECTURE%"=="x86" %windir%\system32\cscript //nologo //e:jscript "%~dpnx0"|find /i "220" && call :PASSED || call :FAILED if "%W3SOCKET%"=="NOT_INSTALLED" regsvr32 /u /s Socket.dll set "W3SOCKET=" set "WORKFOLDER=" set "LOGFILE=" exit /b :PASSED REM successfully connected 1>>"%LOGFILE%" echo Passed at %DATE% %TIME% goto :EOF :FAILED REM no connection 1>>"%LOGFILE%" echo Epic fail at %DATE% %TIME%. Router rebooted goto :EOF */ var RemoteHost = "smtp.gmail.com:25"; var RouterAddress = "192.168.0.1:23"; var RouterLogin = "admin"; var RouterPassword = "admin"; var RouterCommandPrompt = "#"; var RouterRebootCommand = "reboot"; try { var TelnetSession = WScript.CreateObject("Socket.TCP"); TelnetSession.DoTelnetEmulation = 1; TelnetSession.TelnetEmulation = "TTY"; TelnetSession.host = RemoteHost; TelnetSession.Open(); TelnetSession.WaitFor("220"); TelnetSession.SendLine("quit"); TelnetSession.Close(); WScript.echo(TelnetSession.Buffer); } catch(e){ var RouterSession = WScript.CreateObject("Socket.TCP"); RouterSession.DoTelnetEmulation = 1; RouterSession.TelnetEmulation = "TTY"; RouterSession.host = RouterAddress; RouterSession.Open(); RouterSession.WaitFor("login:"); RouterSession.SendLine(RouterLogin); RouterSession.WaitFor("password:"); RouterSession.SendLine(RouterPassword); RouterSession.WaitFor(RouterCommandPrompt); RouterSession.SendLine(RouterRebootCommand); RouterSession.Close(); WScript.echo(RouterSession.Buffer); } В скрипте использованы умолчальные IP, login и password, характерные для роутеров dlink с оригинальной прошивкой. Соответственно - исправьте на свои, если у вас другие. RouterCommandPrompt зависит от прошивки и модели роутера. Для Dlink DIR-320 с родной прошивкой это "#", для Asus RT-N16 с "олеговской" это "$". Что у вашего роутера - то и ставьте RouterRebootCommand - команда перезагрузки роутера. Для доступных мне роутеров это "reboot", если у вашего что-то другое - впишите своё. В назначенные задания добавляется командой Код:
schtasks /create /RU SYSTEM /SC MINUTE /MO 15 /ST 00:00:01 /TR "c:\checker2\checker2.cmd" /TN "IMHO.ws Connect Checker 2.0" Не будет работать, если ваш провайдер заблокировал доступ к внешним серверам по 25 порту!!!
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила! Распространенье наше по планете Особенно заметно вдалеке: В общественном парижском туалете Есть надписи на русском языке В. Высоцкий |
![]() |
![]() |
# 4 | |
СуперМод
IMHO Консультант 2005-2009 Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 478
![]() |
IMHO.ws Connect Checker 1.5
Тут мне на руборде wolf0425 высказал претензию по-поводу обилия JScript в IMHO.ws Connect Cheker 2.0:
Цитата:
![]() Правда, там кроме wget с кучей библиотечек требуется ещё одна доп. программа TSE (Telnet script executor). И файлов несколько поболее... Checker.cmd: Код:
set REMOTEURL=ftp://ftp.mozilla.org/index.html set WORKFOLDER=c:\checker set LOGFILE=%WORKFOLDER%\checker.log set WGETPROG=%WORKFOLDER%\wget.exe %WGETPROG% --tries=3 --output-document=%WORKFOLDER%\foo.html %REMOTEURL% && call :PASSED ||call :FAILED goto :EOF :PASSED REM есть коннект 1>>%LOGFILE% echo Passed at %DATE% %TIME% del /q %WORKFOLDER%\foo.html goto :EOF :FAILED REM нет коннекта 1>>%LOGFILE% echo Epic fail at %DATE% %TIME%. Rebooting router. ( echo open 192.168.0.1 echo waitfor "login:" echo transmit "admin^^M" echo waitfor "sword:" echo transmit "admin^^M" echo waitfor "#" echo transmit "reboot^^M" )|tse >>%LOGFILE% goto :EOF Работает... Точнее - уже работало, версию 2.0 я для того и делал, чтобы от лишних файлов избавиться... ![]() Единственный (на мой взгляд) существенный плюс по сравнению с версией 2.0 - wget в принципе всё равно какой файлик, откель и с какого порта тянуть. Можно по http с сайта мокрософта, можно по ftp с сайта мозилы. Нет привязки к smtp...
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила! Распространенье наше по планете Особенно заметно вдалеке: В общественном парижском туалете Есть надписи на русском языке В. Высоцкий |
|
![]() |
![]() |
# 5 | |
СуперМод
IMHO Консультант 2005-2009 Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 478
![]() |
Если у вас VPN без роутера
Вопрос из другого топика, и довольно старый
Цитата:
![]() Код:
rasdial <Имя соединения> /DISCONNECT rasdial <Имя соединения> <Имя пользователя> <Пароль> ![]() Или даже без использования сторонних утилит вообще: Код:
>nul ping -n 10 www.ru |find /i "TTL" ||( rasdial <Имя соединения> /DISCONNECT rasdial <Имя соединения> <Имя пользователя> <Пароль> )
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила! Распространенье наше по планете Особенно заметно вдалеке: В общественном парижском туалете Есть надписи на русском языке В. Высоцкий |
|
![]() |
Теги (метки) |
bat, cmd, connect checker, jscript, router, telnet, telnet скрипт, vpn, проверка соединения, стабильность соединения |
|
|