motofan logo
> 

Скрипт-пинговалка для поддержания Gprs-соединения, Для тех, кто использует gprs-internet

Как вы оцениваете данный мануал?
Как вы оцениваете данный мануал?
Заслуживает участия в финале конкурса [ 100 ] ** [85.47%]
Не заслуживает участия в финале конкурса [ 17 ] ** [14.53%]
Всего голосов: 117
Вы должны набрать 0 поста, что бы голосовать. 
Паук
сообщение 16.2.2007, 11:50


Open Mind
*****

Группа: Почётные мотофаны
Сообщений: 452
Регистрация: 17.6.2005
Из: Полтава, Украина
Пользователь №: 44 370
Модель телефона: (M)
Прошивка: разные

Рейтинг: 530



Довольно часто операторы (и провайдеры) предлагают дешевый интернет - или вообще предоставляют анлим. Но у нас все не как у людей, просто так счастья быть не может. Часто соединение разрывается или "затыкается" "залипает" (когда соединение не разрывается, но данные не идут).

Всем, кто сталкивается с этой проблемой - поможет простенький скрипт-пинговалочка.
Его смысл: периодически пингуется адрес. При отсутствии пинга (когда канал "залип" или разорвался) происходит переподключение. Запустив этот скрипт, можно быть уверенным в поддержании работоспособности подключения.


Порядок действий:
1. Создаем в блокноте cmd-файл (например, pinger.cmd) со следующим содержимым:
upd: переработана логика - добавлен разрыв соединения, пересоединение
Код
@echo off
echo %date% %time% --- STARTED --- >> pinger.log
set Try=1

rem Все настройки вынесены в этот блок

rem имя подключения
set DialName=Life
rem Логин
set Login=Login
rem Пароль
set Pass=Password
rem таймаут пинга в мс
set TimeOut=10000
rem количество попыток пинга
set MaxPing=5
rem пауза в с
set Pause=30
rem адрес хоста для пинга
set host=ya.ru
rem свой телефонный номер
set PhoneNum=80631234567

:start
echo.
echo start ping
ping %host% -n 1 -w %TimeOut%
if errorlevel=1 goto bad
goto ok

:ping
echo.
ping %host% -n 1 -w %TimeOut%
if not errorlevel=1 goto ok
set /a Try=%Try%+1
if %Try% geq %MaxPing% goto bad
goto ping

:ok
echo.
echo ALL RIGHT
goto end

:bad
set /a Try=1
echo.
echo BAD CONNECT
echo %date% %time% --! Trouble, reconnect !-- >> pinger.log
rasdial %DialName% /disconnect
rasdial %DialName% /phone:%PhoneNum%
rasdial %DialName% %Login% %Pass%
if errorlevel=1 goto bad
goto ping

:end
set /a Try=1
echo.
choice /C:PRDE /T:P,30 /N Pause 30 seconds. [P]ing [R]econnect [D]isconnect [E]xit?
rem echo.
rem echo.
goto %ERRORLEVEL%
:1
goto ping
:2
goto bad
:3
rasdial %DialName% /disconnect
:4
echo %date% %time% == Exit script == >> pinger.log

В даном файле нужно заменить (при желании) адрес хоста, который пингуется (set host = ya.ru), таймаут пинга (set TimeOut = 10000), количество попыток пинга (set MaxPing = 5) после которого будет переподключение, интервал проверки соединения (set Pause = 30) а так же ОБЯЗАТЕЛЬНО меняем имя подключения (set DialName = Life) [смотрим имя: Пуск - Настройки - Сетевые подключения - имя Вашего подключения] и логин/пароль (set Login=Login set Pass=Password) - если это требуется для установки соединения.

2. Рядом с pinger.cmd кладем choice.com
Прикрепленный файл choise.rar   ( 2.88 килобайт ) Кол-во скачиваний: 4743


3. Запускаем и радуемся жизни - пинговалка установит соединение и будет поддерживать его в рабочем состоянии.

Для линукса я соорудил аналогичный скрипт для поддержания выделенки:
Прикрепленный файл pinger.zip   ( 684 байт ) Кол-во скачиваний: 2013

© Паук, 2007

Сообщение отредактировал Паук - 15.3.2007, 6:36
Прикрепленный файл pinger.zip   ( 684 байт ) Кол-во скачиваний: 2013
Прикрепленный файл choise.rar   ( 2.88 килобайт ) Кол-во скачиваний: 4743
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
 
Ответ в темуСоздание новой темы
Ответов
flashrid3r
сообщение 20.10.2009, 14:10


Новичок
*

Группа: Пользователи
Сообщений: 12
Регистрация: 12.10.2008
Пользователь №: 183 534
Модель телефона: 398
Прошивка: 49

Рейтинг: 6.5



Отличный скрипт, давно хотел что-то подобное. И почему я только сейчас его нашёл?
Вот, держите мою версию. Перевёл на русский язык всё, немного изменил логику скрипта, сделал сообщения об ошибках и вывод статуса в заголовке окна.

Может быть, еще для каких номеров ошибки rasdial специальную обработку сделать? Конечно, сообщения rasdial сами по себе достаточно информативны, но по отношению к gprs некоторые ошибки могут иметь свой какой-то особенный смысл, зачастую неочевидный.
Например, бывает когда по коду ошибки можно точно сказать, подключиться не получится, пока не перезагрузишь телефон. К сожалению, я не помню какой точно, никогда не обращал особо внимания на эти номера.
Прикрепленный файл pinger.zip   ( 4.68 килобайт ) Кол-во скачиваний: 436
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
bammbr
сообщение 26.10.2009, 20:26


Новичок
*

Группа: Начинающие
Сообщений: 2
Регистрация: 26.10.2009
Пользователь №: 208 761
Модель телефона: Samsung D900

Рейтинг: 0



Цитата(flashrid3r @ 20.10.2009, 20:10) *

Отличный скрипт, давно хотел что-то подобное. И почему я только сейчас его нашёл?
Вот, держите мою версию. Перевёл на русский язык всё, немного изменил логику скрипта, сделал сообщения об ошибках и вывод статуса в заголовке окна.

Может быть, еще для каких номеров ошибки rasdial специальную обработку сделать? Конечно, сообщения rasdial сами по себе достаточно информативны, но по отношению к gprs некоторые ошибки могут иметь свой какой-то особенный смысл, зачастую неочевидный.
Например, бывает когда по коду ошибки можно точно сказать, подключиться не получится, пока не перезагрузишь телефон. К сожалению, я не помню какой точно, никогда не обращал особо внимания на эти номера.

Не вижу смысла пользователям ХР и выше тащить отсюда choice.com, а в скрипте проверять его наличие в каталоге скрипта. Choice есть в самой винде. Только там синтаксис немного другой. Навскидку подредактировал твой скрипт:
Код

@echo off
title Pinger
echo %date% %time% --- STARTED --- >> pinger.log
set /a Try=1

rem Оригинальная версия (c) Паук, 2007
rem Дополнения и исправления flashrider, 2009
rem http://forum.motofan.ru/index.php?showtopic=99866

rem Все настройки вынесены в этот блок

rem имя подключения
set DialName=beeline

set Login=beeline
set Pass=beeline

rem таймаут пинга в мс
set TimeOut=10000
rem количество попыток пинга
set MaxPing=5
rem пауза в секундах
set Pause=40
rem адрес хоста для пинга
set host=ya.ru
rem свой телефонный номер
set PhoneNum=*99#

echo  start ping
rem if not exist choice.com (
rem echo Для работы этого скрипта необходимо наличие файла choice.com в папке со скриптом.
rem echo Он, по идее, в том же архиве должен быть, я не знаю куда ты его дел.
rem pause
rem goto 4
rem )

echo Управление:
echo  P - ping (для проверки соединения)
echo  R - немедленное принудительное переподключение
echo  D - разорвать соединение и выйти
echo  E - выйти, не разрывая соединение
echo ...А можно ничего не нажимать, просто свернуть это окно.
echo Тогда скрипт будет атоматически проверять соединение
echo каждые %Pause% секунд и, при необходимости, переподключаться.
echo.
rasdial %DialName% %Login% %Pass%
if %errorlevel%==623 goto error623
if %errorlevel%==797 goto error797

:ping
title Проверяем ping - Pinger
echo.
echo  Проверяем ping...
if %try% geq 2 echo  Попытка номер %try%...
ping %host% -n 1 -w %TimeOut% >> nul
if not errorlevel=1 goto ok
set /a Try=%Try%+1
if %Try% geq %MaxPing% (
set /a Try=1
goto bad
)
title Нет соединения - Pinger
goto ping

:ok
echo.
echo  %time% Соединение активно. 
title Соединение активно - Pinger
echo Следующая проверка через %Pause% секунд.
goto end

:bad
echo.
echo  %time% Нет соединения, попробуем переподключиться...
if %try% geq 2 echo  Попытка номер %try%...
if %try% geq 5 (
echo Нет, чё-то не получается.
echo Подожду пару минут, потом ещё раз попробую...
choice /T 120 /N
set /a Try=1
goto bad
)
echo %date% %time% --! Trouble, reconnect !-- >> pinger.log
echo Разрываем текущее соединение (если подключено)...
rasdial %DialName% /disconnect
if %try% geq 3 (
echo Звоним на %PhoneNum%, чтобы "сбросить" модем...
rasdial %DialName% /phone:%PhoneNum%
)
echo Подключаемся к %DialName%...
title Подключаемся... - Pinger
rasdial %DialName% %Login% %Pass%
if %errorlevel%==797 goto error797
if errorlevel=1 (
title Ошибка rasdial #%errorlevel% - Pinger
echo %date% %time% -- rasdial errorlevel: %errorlevel%-- >> pinger.log
set /a Try=%Try%+1
goto bad
)
set /a Try=1
goto ping

:error623
echo.
echo  Ошибка 623. Не существует подключения с таким именем "%DialName%".
echo Отредактируйте в скрипте имя вашего подключения.
echo Или откройте "Панель управления" - "Сетевые подключения"
echo и переименуйте ваше подключение в %DialName%
pause
goto 4

:error797
title Ошибка #797 - Pinger
echo.
echo  Ошибка 797. Телефон не подключен, или занят другой программой.
echo Проверьте телефон и попробуйте еще раз.
echo Следующая попытка переподключения через 20 секунд...
choice /T 20 /N
set /a Try=1
goto bad

:end
set /a Try=1
echo [P]ing [R]econnect [D]isconnect [E]xit?
choice /C:PRDE /T %Pause% /D P /N
goto %ERRORLEVEL%
:1
goto ping
:2
goto bad
:3
echo Отключаемся, пожалуйста подождите...
rasdial %DialName% /disconnect
:4
echo %date% %time% == Exit script == >> pinger.log


...на первый взгляд работает как дОлжно. Если кому интересно, могу переписать этот скрипт на VBS. Вообще красиво получится. Но,возможно, не так информативно сделать придется, чтоб выскакивающие окошки не доставали. Или сделать под консольный CScript. Windows Script Host Version 5.6 так же в любой винде начиная с ХР болтается.

Сообщение отредактировал bammbr - 26.10.2009, 20:43
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
flashrid3r
сообщение 27.10.2009, 6:34


Новичок
*

Группа: Пользователи
Сообщений: 12
Регистрация: 12.10.2008
Пользователь №: 183 534
Модель телефона: 398
Прошивка: 49

Рейтинг: 6.5



Цитата(bammbr) *
Choice есть в самой винде.
Странно, у меня нету..

Цитата(bammbr) *

rem свой телефонный номер
set PhoneNum=*99#
переменная PhoneNum не для этого сделана.
Цитата(Паук @ 18.2.2007, 18:07) *

Иногда, когда канал залип (даже при переподключании траф не идет) - помогает перезвонить самому себе.
Добавил это в скрипт.

Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
bammbr
сообщение 27.10.2009, 23:00


Новичок
*

Группа: Начинающие
Сообщений: 2
Регистрация: 26.10.2009
Пользователь №: 208 761
Модель телефона: Samsung D900

Рейтинг: 0



Цитата(flashrid3r @ 27.10.2009, 12:34) *

Странно, у меня нету..

Да уж... с обобщением на все ХР - это я погорячился. unsure.gif Просто CHOICE в виде EXE-файла присутствовал еще MS-DOS 6.0 в составе core set of utilities (Застал, знаешь ли, еще те лохматые времена smile.gif Тогда и писал активно сам ВАТ-ники). Потом CHOICE перекочевал в Resource Kit, откуда тоже временами исчезал. Подробнее смотри здесь:
http://www.winsupport.org/utilities/freedos-choice.html
Ну а на моей XP 64-bit ни опубликованный тобой COM, ни доступный по ссылке выше ЕХЕ-шник просто не запустятся, как 16-битные приложения. Зато по путям %SystemRoot%\system32 и %SystemRoot%\SysWOW64 есть свои, родные. А если верить этому
http://blogs.techrepublic.com.com/window-on-windows/?p=682
и этому
http://www.greatis.com/vista/Utilities/c/choice.exe.htm
CHOICE прочно вернулся в состав системных утилит в Висте.
На 32-битной ХР, я думаю, не будет проблем с запуском CHOICE из 2003-го сервера.
Ну, а вообще, конечно, колхоз - дело добровольное. Странно просто со скриптом таскать программу, неизвестно откуда взятую, вдвое большую самого скрипта, и содержащую одну только функцию. Из-за таких вот ограничений я и предпочитаю языку BAT-файлов VBS. Хотя, вроде, и в BAT-нике это можно реализовать по примеру
http://social.technet.microsoft.com/forums...4-d0ad059d1dd7/
(тут см. последнее сообщение).
Да и запоздали мы с тобой с обсуждением этой темы, если судить по датам начала обсуждения. Меня извиняет только то, что я никогда мобильным интернетом как основным типом подключения не пользовался. А сейчас пока выбора нет. Но для себя уже сделал вывод, что мегабит, скажем, по меди и мегабит по эфиру - это две большие разницы. При первой же возможности перейду на другую технологию подключения.

Сообщение отредактировал bammbr - 27.10.2009, 23:03
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить

Сообщений в этой теме
Паук   Скрипт-пинговалка для поддержания Gprs-соединения   16.2.2007, 11:50
***skyline***   Паук, теперь у меня всё ОК работает!!...   16.2.2007, 13:24
avbua   А я основные настройки вынес в начало файла Set Di...   16.2.2007, 14:31
PaxweL   Паук, спасиб, очень полезная штука. Бум сёдня тест...   16.2.2007, 16:16
igorrius   необходимо задать значение W что это за значение...   16.2.2007, 20:27
Kirill111111   ага у мну тоже самое :\ ps у меня этот скрип...   16.2.2007, 22:42
ApxuBatop   Скрипт конечно прикольный, да вот тему моторолы он...   17.2.2007, 0:03
Scalar   Согласен, с таким же успехом можно написать кратен...   18.2.2007, 9:58
Паук   [b]Пофиксил настройки скрипта Как это не затрагив...   18.2.2007, 12:54
Serji   Согласен :) Имхо, полезный мануал, а главное ск...   18.2.2007, 13:01
YerShow   Считаю, что никто ничего не нарушал. В условиях ко...   18.2.2007, 13:52
Scalar   а никто не говорит о нарушениях) простой, Полезны...   18.2.2007, 14:29
Паук   Иногда, когда канал залип (даже при переподключани...   18.2.2007, 15:07
Kirill111111   а можешь отдельным скриптом сделать разрыв соедин...   18.2.2007, 15:19
Паук   @echo off set DialName=Life rasdial %DialName% /di...   18.2.2007, 15:33
igorrius   скрипт теперь работает. (ТЬФУ ТЬФУ) держи + нуж...   18.2.2007, 22:05
Паук   igorrius, в джиме есто опция "поддерживать с...   19.2.2007, 6:43
igorrius   ничего не помогает какое значение пинга ставить?...   19.2.2007, 20:05
YerShow   Вообще-то опция "Поддерживать соединение...   19.2.2007, 20:39
igorrius   так сменю, как только потрачу передплаченый жпрс т...   22.2.2007, 14:48
lv333   2 Паук Было бы неплохо добавить в скрипт счетчик т...   24.2.2007, 13:21
Паук   Ну это же тебе не юникс... Там я в 2 счета такое с...   24.2.2007, 13:33
lv333   В юниксе и я зделаю :) А на винде можно использова...   24.2.2007, 16:30
Фин   прикольный скриптик :) я себе еще добавил очистку...   8.3.2007, 5:02
DJ EnerGY   Кто то может дать полный текст что б было уже гото...   13.3.2007, 13:00
MObi Dick   Паук, Спасибо огромное. Уже надоели постоянные за...   26.3.2007, 20:39
_SAN_   Отличный скрипт. Я хотел найти прогу, которая бы п...   29.3.2007, 16:14
igorrius   можно ли присвоить пакетам пинга повышеный приорит...   7.4.2007, 19:23
lv333   можно ли присвоить пакетам пинга повышеный приори...   9.4.2007, 17:41
cell_IST   ...то пакеты не всегда проходят, и рабочее соедин...   11.4.2007, 13:35
усатый   Паук, Что то я ни чего не понял :( Как создать с...   14.4.2007, 10:46
igorrius   не разрівая запершееся соединение, нажимя на телеф...   22.4.2007, 14:36
Neomoto   Паук, у меня cmd запускается, вск. соединение, оди...   20.6.2007, 12:08
DGMA   Отличная пинговалка!Долго мучился с разрывом с...   21.6.2007, 13:49
DANGER86   Почему он зачастую пишет: start ping start ping ...   16.7.2007, 10:39
Alex-man   Можно кстати обычную аську поставить, тоже соедине...   16.7.2007, 14:02
leshiy   :thumbsup: работает отлично!!!!...   8.9.2007, 9:27
~Gangs2er~   Всем привет! Хотел спросить, у меня мегафон(но...   28.3.2008, 13:16
Паук   аха   28.3.2008, 13:19
Kardigans   Паук Как мне настроить пинговалку для МТС украина....   18.5.2008, 19:45
flashrid3r   Отличный скрипт, давно хотел что-то подобное. И по...   20.10.2009, 14:10
bammbr   Отличный скрипт, давно хотел что-то подобное. И п...   26.10.2009, 20:26
flashrid3r   Choice есть в самой винде.Странно, у меня нету.. ...   27.10.2009, 6:34
bammbr   Странно, у меня нету.. Да уж... с обобщением на ...   27.10.2009, 23:00

Скрипт-пинговалка для поддержания Gprs-соединения, Для тех, кто использует gprs-internet · WAP и GPRS · Forum
 

Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 14.7.2025, 17:46

Форум живёт: