Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум 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 | Цитировать


Попробуйте:

Код: Выделить весь код
cmdow @ /HID

@echo off

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

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

:ping

ping -n 1 %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%==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
        goto :ping
)

ping -n %WaitTime% 127.0.0.1 > Nul

goto :ping

:reboot

taskkill /f /t /im SW_WiMaxCM.exe > Nul

ping -n 3 127.0.0.1 > Nul

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

exit /b
и лучше поменяйте ya.ru на ближайший веб-узел Вашего провайдера, или посмотрев командой tracert ya.ru

-------
Alex Dragokas


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


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



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

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


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


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

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


Похоже у вас Freshtel? Попробуйте поставить галочку в инженерном меню. Не факт, но возможно поможет.

Отправлено: 22:54, 18-12-2011 | #3


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


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

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


Это у Freshtel-а автоподключение к интернету при запуске менеджера.

-------
Alex Dragokas


Отправлено: 23:05, 18-12-2011 | #4


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


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

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


А можно мне к темке примазаться? Как раз пытаюсь сделать подобное, только у меня сложнее... У меня перезапуск утилиты не спасает, нужно передергивать модем (такое впечатление, что он зависает). В принципе мой батник работает, но иногда, когда соединение зависает, ping.exe сносит крышу. Вместо ошибок пинга она выдает
C:\Users\admin>ping 8.8.8.8
C:\Users\admin>ping 8.8.8.8
C:\Users\admin>ping 8.8.8.8
C:\Users\admin>ping 8.8.8.8
... и так до бесконечности. Как победить, пока не знаю.

Код: Выделить весь код
ping -n 1 8.8.8.8
if not errorlevel 1 goto end
ping -n 1 8.8.4.4
if not errorlevel 1 goto end
ping -n 1 freshtel.ua
if not errorlevel 1 goto end
ping -n 1 ukr.net
if not errorlevel 1 goto end
d:\Portable\devcon\devcon.exe disable USB\VID_1076*
ping -n 1 localhost > nul
d:\Portable\devcon\devcon.exe enable USB\VID_1076*
ping -n 4 localhost > nul
d:\Portable\devcon\devcon.exe restart USB\VID_1076*
echo %date% %time% >> d:\Portable\devcon\log.txt
:end

Отправлено: 23:31, 18-12-2011 | #5


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


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

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


Команда пинг и в правду иногда ведет себя подозрительно, но симитировать все ее ошибки не всегда получается.

Я смотрю Вы подряд пингуете несколько адресов... бывает что freshtel.ua не пингуется, а ukr.net работает?

Могу посоветовать разве что найти какую-то другую методику проверки доступности инета или тот же пинг, но через другой интерфейс.
Например, amel27 писал про WMI http://forum.oszone.net/post-1065308-8.html
Попробуйте подставить туда Ваш код restart-а USB.

-------
Alex Dragokas


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


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


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


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

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


Сохраните этот код в файл myping.vbs
Код: Выделить весь код
iPing = Ping("www.google.com")

If iPing=0 Then
  WScript.Echo "0"
Else
  WScript.Echo "1"
End If

Function Ping (strTarget)
  Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
  Set colPings = objWMIService.ExecQuery ("Select * From Win32_PingStatus where Address = '" & strTarget & "'")

  For Each objPing in colPings
    Ping = objPing.StatusCode
  Next
End Function
А в этом батнике у Вас будет проверяться наличие инета каждые 120 сек:
Код: Выделить весь код
@Echo Off
:ping
for /f %%a in ('cscript //nologo myping.vbs') do set inet=%%a 
if %inet% == 1 (
d:\Portable\devcon\devcon.exe disable USB\VID_1076*
ping -n 1 localhost > nul
d:\Portable\devcon\devcon.exe enable USB\VID_1076*
ping -n 4 localhost > nul
d:\Portable\devcon\devcon.exe restart USB\VID_1076*
echo %date% %time% >> d:\Portable\devcon\log.txt
ping -n 5 localhost >nul
) else ping -n 120 localhost >nul
goto :ping

-------
Alex Dragokas

Это сообщение посчитали полезным следующие участники:

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


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

Ветеран


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

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


Цитата YouHim:
Похоже у вас Freshtel? Попробуйте поставить галочку в инженерном меню. Не факт, но возможно поможет. »
Да, FreshTel но российский, и коннект менеджер не такой как на скриншоте. Вообще кривой самописный местными деревенскими программистами А какой у вас он? Может и на наш подойдет?
Ближе чем ya.ru ничего не найти, IP провайдера странным образом ходит через германию..

Последние 2 скрипта я так понял перезапускает не менеджер, а драйвер модема?
Пробую все предложенные варианты, позже отпишу результат.

Вот как все печально, 1 хоп закрыт, 2 уже 178мс.

Трассировка маршрута к ya.ru [77.88.21.3]
с максимальным числом прыжков 30:

1 * * * Превышен интервал ожидания для запроса.
2 178 ms 119 ms 80 ms 10.0.0.5
3 65 ms 174 ms 111 ms msk-ix-m9.yandex.net [193.232.244.93]
4 80 ms 144 ms 139 ms 213.180.213.102
5 * * * Превышен интервал ожидания для запроса.
6 54 ms 109 ms 104 ms www.yandex.ru [77.88.21.3]

Трассировка завершена.

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


Последний раз редактировалось Инсульт, 19-12-2011 в 01:59.


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


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


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

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


У меня, кстати, тоже Wimax от Альтернет (фрештел-а), только на выносной стац.антенне и модем под 220 В и по LAN-у подключается
Цитата Инсульт:
перезапускает не менеджер, а драйвер модема? »
Да, там консольным диспетчером устройств отключается, подключается, а потом еще и обновляется USB-порт, на котором висит модем.
Вам тоже подойдут эти 2 скрипта, если замените строки с "devcon" на свои "taskkill ..."

P.S. Ну можно еще пробовать пинговать до yandex.net или напрямую на адрес 77.88.21.11 (выдал ping yandex.net), чтобы исключить ошибки DNS-сервера и т.п. задержки при переадресациях.

-------
Alex Dragokas


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


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


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

Ветеран


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

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


Что то не то... Сделал так:
При пропадании интернета устройство отключается и больше не включается.

Код: Выделить весь код
@Echo Off
:ping
for /f %%a in ('cscript //nologo myping.vbs') do set inet=%%a 
if %inet% == 1 (
"%SystemRoot%\system32\devcon.exe" disable USB\VID_1076*
ping -n 1 localhost > nul
"%SystemRoot%\system32\devcon.exe" enable USB\VID_1076*
ping -n 4 localhost > nul
"%SystemRoot%\system32\devcon.exe" restart USB\VID_1076*
echo %date% %time% >> С:\clog.txt
ping -n 5 localhost >nul
) else ping -n 120 localhost >nul
goto :ping

В окне пишет это:
USB\VID_1076&PID_7F00\72130202 : Disabled
1 device(s) disabled.

В "процес експлорере" видно что скрипт зациклен на команде device Disabled

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


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



Компьютерный форум 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




 
Переход