Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Перезапуск программы при пропадании интернета.

Ответить
Настройки темы
CMD/BAT - Перезапуск программы при пропадании интернета.

Аватара для Инсульт

Ветеран


Сообщения: 981
Благодарности: 159


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Задача такая: Есть коннект менеджер для 4G интернета, но у него нет функции авто-переподключения при обрыве связи.

Есть такой скрипт:
читать дальше »
Код: Выделить весь код
cmdow @ /HID

@echo off

cls

echo %date% - %time%: Connection checking... >>auto.log

set /a WaitTime=120*1
set Address=ya.ru
set /a conn_avail=-1

call :ping
exit

:ping

ping %Address% > Nul

if ERRORLEVEL 0 (
        if %conn_avail%==0 (
                set /a conn_avail=1
                echo %date% - %time%: Connection restored... >>auto.log
        )
)

if ERRORLEVEL 1 (
        if %conn_avail%==-1 (
                echo %date% - %time%: Disconnected! Reconnecting... >>auto.log
        )
        if %conn_avail%==0 (
                echo %date% - %time%: Unable to reconnect... >>auto.log
        )
        if %conn_avail%==1 (
                echo %date% - %time%: Disconnected! Reconnecting... >>auto.log
        )
        set /a conn_avail=0
        call :reboot
)

ping -n %WaitTime% 127.0.0.1 > Nul

call :ping

rem exit /b

:reboot

taskkill /f /im SW_WiMaxCM.exe > Nul

start /D "D:\4G\" SW_WiMaxCM.exe > Nul

exit /b


Работает, но если был дисконект во время таймаута 120с то срабатывает как и положено.
А если дисконект был во время комманды проверки (ping) то программа перезапускается моментально, т.е сначала скрипт пытается запустить еще 1 копию программы не завершая предыдущую. После ошибки программы "programm is running" скрипт останавливается.

-------
Debugged programm was unable to process exception. Terminating...


Отправлено: 13:34, 18-12-2011

 

Пользователь


Сообщения: 148
Благодарности: 39

Профиль | Сайт | Отправить PM | Цитировать


Дак, я же писал
Цитата Diskretor:
замените строки с "devcon" на свои "taskkill ..." »
Этот код был для YouHim, так как у него
Цитата YouHim:
перезапуск утилиты не спасает, нужно передергивать модем »
У Вас же должен быть такой код:
Код: Выделить весь код
@Echo Off
:ping
for /f %%a in ('cscript //nologo myping.vbs') do set inet=%%a 
if %inet% == 1 (

taskkill /f /t /im SW_WiMaxCM.exe > Nul
ping -n 3 127.0.0.1 > Nul
start /D "D:\4G\" SW_WiMaxCM.exe > Nul
ping -n 5 localhost >nul

) else ping -n 120 localhost >nul
goto :ping
Переменная inet получает из vbs-скрипта значение 1, когда нет интернета; или 0 - при успешном подключении.
Также я делаю паузы, чтобы процесс успел выгрузится. И после запуска менеджера, чтобы он успел подключится перед следующей проверкой пинга.
Если не успевает подключится в течении 4-5 сек., то значение "5" нужно увеличить здесь "ping -n 5 localhost >nul"

-------
Alex Dragokas


Последний раз редактировалось Dragokas, 19-12-2011 в 12:45.


Отправлено: 12:33, 19-12-2011 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 16
Благодарности: 1

Профиль | Отправить PM | Цитировать


Diskretor, Спасибо. Буду пробовать.
Цитата Инсульт:
Да, FreshTel но российский, и коннект менеджер не такой как на скриншоте. Вообще кривой самописный местными деревенскими программистами А какой у вас он? Может и на наш подойдет? »
Сам коннект менеджер вот такой.

А на скриншоте выше его инженерное меню.

Отправлено: 12:42, 19-12-2011 | #12


Аватара для Инсульт

Ветеран


Сообщения: 981
Благодарности: 159

Профиль | Сайт | Отправить PM | Цитировать


Так мне вариант с перезапуском устройства тоже подошел бы. Коннект менеджер так хитро написан что автоматически подключается только при первом запуске или при отключении модема от порта или в устройствах. Вот я и пытался прикрутить "чужой" скрипт под себя, но что то никак.. останавливает но не запускает устройство.


Цитата YouHim:
А на скриншоте выше его инженерное меню. »
Хм.. у меня такой же. И как попасть в меню?

-------
Debugged programm was unable to process exception. Terminating...


Отправлено: 12:44, 19-12-2011 | #13


Пользователь


Сообщения: 148
Благодарности: 39

Профиль | Сайт | Отправить PM | Цитировать


Цитата Инсульт:
останавливает но не запускает устройство. »
Возможно тоже проблема с паузами ?
Здесь слишком мало выставлено:
Код: Выделить весь код
"%SystemRoot%\system32\devcon.exe" disable USB\VID_1076*
ping -n 1 localhost > nul
"%SystemRoot%\system32\devcon.exe" enable USB\VID_1076*
Попробуйте увеличить, хотябы с "1" до "4".

-------
Alex Dragokas


Отправлено: 12:50, 19-12-2011 | #14


Новый участник


Сообщения: 16
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата Инсульт:
Хм.. у меня такой же. И как попасть в меню? »
Shift+Ctrl+F10 (именно в таком порядке)
login "admin2"
password "admin2"

Отправлено: 14:01, 19-12-2011 | #15


Новый участник


Сообщения: 16
Благодарности: 1

Профиль | Отправить PM | Цитировать


Diskretor,
Спасибо! vbs cкрипт работает, даже в том случае, когда ping.exe зависал. Но были замечены ложные срабатывания. Возможно из-за потерь пакетов. Что нужно дописать, чтобы скрипт возвращал ошибку после того как пропингует, например, 3 сайта по 10 пингов? Если ни один пинг не прошел, только тогда выполнить переподключение. И желательно пингивать 1 байтом..
Такая многоуровневая перестраховка нужна, так как когда канал загружен под завязку, то пинги почти не прорываются

Отправлено: 15:35, 19-12-2011 | #16


Аватара для Инсульт

Ветеран


Сообщения: 981
Благодарности: 159

Профиль | Сайт | Отправить PM | Цитировать


Да, если играть с параметром ping то вроде работает, думаю лучшего варианта не придумать..
В инженерном меню тоже стоит галка на "авто реконнект" но эффекта не дает почему то..

-------
Debugged programm was unable to process exception. Terminating...


Отправлено: 15:37, 19-12-2011 | #17


Новый участник


Сообщения: 16
Благодарности: 1

Профиль | Отправить PM | Цитировать


Инсульт, а у вас просто обрывы связи или сам модем подвисает? Когда связь пропала, можно подключиться через коннект менеджер, или нужно обязательно перетыкать модем?

Отправлено: 15:48, 19-12-2011 | #18


Пользователь


Сообщения: 148
Благодарности: 39

Профиль | Сайт | Отправить PM | Цитировать


Можно попробовать этим же скриптом с прописанными разными адресами в каждом из vbs файлов. Если при последовательном запуске переменная inet всегда будет == 1, то перезапустить менеджер.

-------
Alex Dragokas


Отправлено: 16:13, 19-12-2011 | #19


Новый участник


Сообщения: 16
Благодарности: 1

Профиль | Отправить PM | Цитировать


Еще проблема образовалась... Когда канал загружен на 100% закачкой, то пинги не проходят. Совсем. Даже однобайтные.
В этом случае скрипт будет постоянно переподключать модем без толку. Может есть другой способ проверить наличие сети, кроме пинга?

Отправлено: 17:49, 19-12-2011 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Перезапуск программы при пропадании интернета.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Автоматический перезапуск программы alleo Microsoft Windows 2000/XP 12 24-05-2012 21:39
Перезапуск программы alleo AutoIt 9 21-02-2011 20:25
Прочее - Автоматический перезапуск интернета DJ@XON Сетевые технологии 2 30-06-2010 17:39
CMD/BAT - Перезапуск explorer'а при наличии определённого запущенного приложения Habetdin Скриптовые языки администрирования Windows 2 30-05-2009 17:30
Автоматический перезапуск программы. tueur Программное обеспечение Windows 9 21-09-2004 17:59




 
Переход