|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Перезапуск программы при пропадании интернета. |
|
|
CMD/BAT - Перезапуск программы при пропадании интернета.
|
Ветеран Сообщения: 981 |
Профиль | Сайт | Отправить PM | Цитировать Задача такая: Есть коннект менеджер для 4G интернета, но у него нет функции авто-переподключения при обрыве связи.
Есть такой скрипт: Работает, но если был дисконект во время таймаута 120с то срабатывает как и положено. А если дисконект был во время комманды проверки (ping) то программа перезапускается моментально, т.е сначала скрипт пытается запустить еще 1 копию программы не завершая предыдущую. После ошибки программы "programm is running" скрипт останавливается. |
|
------- Отправлено: 13:34, 18-12-2011 |
Пользователь Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать Теоретически "Сетевые виджеты" получают информацию о загруженности канала. Если бы можно было получать такую информацию посредством батника...
|
------- Отправлено: 18:09, 19-12-2011 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Может так-то можно по этим параметрам идентифицировать отсутствие сети?
Сеть есть и сети нет сооответственно: Настройка протокола IP для Windows Имя компьютера . . . . . . . . . : admin-home Основной DNS-суффикс . . . . . . : Тип узла. . . . . . . . . . . . . : Гибридный IP-маршрутизация включена . . . . : Нет WINS-прокси включен . . . . . . . : Нет Порядок просмотра суффиксов DNS . : freshtel.com.ua Ethernet adapter Подключение по локальной сети 3: DNS-суффикс подключения . . . . . : freshtel.com.ua Описание. . . . . . . . . . . . . : GCT WiMAX USB Network Device Физический адрес. . . . . . . . . : 00-11-A4-80-0B-98 DHCP включен. . . . . . . . . . . : Да Автонастройка включена. . . . . . : Да Локальный IPv6-адрес канала . . . : fe80::5da1:75ff:aef2:f6db%16(Основной) IPv4-адрес. . . . . . . . . . . . : 10.4.90.5(Основной) Маска подсети . . . . . . . . . . : 255.255.0.0 Аренда получена. . . . . . . . . . : 19 грудня 2011 р. 18:50:23 Срок аренды истекает. . . . . . . . . . : 20 грудня 2011 р. 18:50:23 Основной шлюз. . . . . . . . . : 0.0.0.0 DHCP-сервер. . . . . . . . . . . : 192.168.84.1 IAID DHCPv6 . . . . . . . . . . . : 285221127 DUID клиента DHCPv6 . . . . . . . : 00-01-00-01-16-22-3A-73-00-16-E6-86-7E-63 DNS-серверы. . . . . . . . . . . : 193.19.247.114 193.19.247.115 NetBios через TCP/IP. . . . . . . . : Включен Настройка протокола IP для Windows Имя компьютера . . . . . . . . . : admin-home Основной DNS-суффикс . . . . . . : Тип узла. . . . . . . . . . . . . : Гибридный IP-маршрутизация включена . . . . : Нет WINS-прокси включен . . . . . . . : Нет Ethernet adapter Подключение по локальной сети 3: Состояние среды. . . . . . . . : Среда передачи недоступна. DNS-суффикс подключения . . . . . : freshtel.com.ua Описание. . . . . . . . . . . . . : GCT WiMAX USB Network Device Физический адрес. . . . . . . . . : 00-11-A4-80-0B-98 DHCP включен. . . . . . . . . . . : Да Автонастройка включена. . . . . . : Да |
Отправлено: 21:22, 19-12-2011 | #22 |
Ветеран Сообщения: 981
|
Профиль | Сайт | Отправить PM | Цитировать Цитата YouHim:
Не проще через WMI определять подключен адаптер к сети или нет? Вот как бы в скрипте увеличить время пинга ya.ru а то 4 запроса мало. Если и правда интернет временно затупил изза торрента или еще чего что бы не перезагружался зря. Как то все сложно выходит. Проще скрипт на autoit сделать что бы нажимал кнопку "подключиться" |
|
------- Отправлено: 21:31, 19-12-2011 | #23 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Цитата Инсульт:
Кстати, винда сообщает, что соединение нерабочее, хотя коннект менеджер показывает противоположное. Вот по этому параметру можно было бы и запускать скрипт. UPD: вот скрипт, который, выдает статус адаптера. http://forum.oszone.net/post-1810790-86.html Переделать бы его.. |
|
Последний раз редактировалось YouHim, 19-12-2011 в 21:59. Отправлено: 21:35, 19-12-2011 | #24 |
Пользователь Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать Если Вам приемлимо использовать стороннее freeware ПО, то могу предложить еще способ с linux-утилитой wget, переписанной под Win:
Скачать Wget Она лишена недостатков со сбоями, как в Ping и может принимать самые различные ключи. Написал код, когда Wget делает 4 попытки по около ~5 сек. Если подключение удачно - идет таймаут 120 сек. и повторная проверка доступности узла Yandex.net (лучше указывать IP-адрес): @Echo Off :ping echo testing inet... "%programfiles(x86)%\GnuWin32\bin\wget.exe" --spider 77.88.21.11 --tries=4 --timeout=20 2>nul if %errorlevel% == 0 (ping -n 120 localhost>nul&goto :ping) echo Restarting inet ::Код для рестарта модема (менеджера) ping -n 10 localhost >nul&goto :ping Цитата YouHim:
Цитата YouHim:
YouHim, вот там, где Вы подчеркнули connected - Вы уверены, что при обрыве связи указанный скрипт 100% без ошибок меняет это значение на disconnected? Можно ввести дополнительную проверку: Перезапускать модем только, если одновременно выполняются два условия: 1) Не проходит ни один пинг 2) Network adapter выдает статус Disabled. Цитата Инсульт:
Цитата Инсульт:
|
||||
------- Последний раз редактировалось Dragokas, 20-12-2011 в 00:55. Отправлено: 00:23, 20-12-2011 | #25 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Цитата Diskretor:
strComputer = "." Set WshShell = WScript.CreateObject("WScript.Shell") Command ="d:\Portable\Script\restart_modem\devcon.exe disable USB\VID_1076*" Command1="d:\Portable\Script\restart_modem\devcon.exe enable USB\VID_1076*" Command2="d:\Portable\Script\restart_modem\devcon.exe restart USB\VID_1076*" Command3="d:\Portable\Script\restart_modem\SW_WiMaxCM.lnk" Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_NetworkAdapter WHERE Name = 'GCT WiMAX USB Network Device'",,48) For Each objItem in colItems rem Wscript.Echo "NetConnectionStatus: " & objItem.NetConnectionStatus status = objItem.NetConnectionStatus if status<>2 Then WshShell.Run "taskkill /IM SW_WiMaxCM.exe", 0 WshShell.Run Command WScript.Sleep 2000 WshShell.Run Command1 WScript.Sleep 5000 WshShell.Run Command2 t = now() Set FSO = CreateObject("Scripting.FileSystemObject") Set f = FSO.OpenTextFile("log.txt", 8, True) f.WriteLine t WshShell.Run Command3 Wscript.Echo "GCT WiMAX USB Network Device restarted" Else End if Next Diskretor, за wget, спасибо. Попробую и ее поковырять на досуге. |
|
Отправлено: 02:02, 20-12-2011 | #26 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Цитата Diskretor:
|
|
Отправлено: 10:47, 20-12-2011 | #27 |
Пользователь Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать Есть такая команда "netstat -s" если ее запустить дважды через секундный интервал, то имеем количество полученных за это небольшое время пакетов:
Алгоритм: 1) 5 последовательных Ping --> все fail AND Packets > 1000 - ничего не делаем (канал перегружен прогой Utorrent) 1) 5 последовательных Ping --> все fail AND Packets <= 50 - Restart Modem Есть только один недостаток, если у Вас несколько LAN-ов, или работает локальная сеть этот метод будет работать неправильно (а фильтра устройств в этой команде я не нашел). |
------- Отправлено: 12:22, 20-12-2011 | #28 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать Цитата YouHim:
Предлагаю делать тщательный разбор того, что возвращает нам ping, а не слепо полагаться на %ErrorLevel% У меня это реализовано вот так: или Ping -n 1 -w 1000 8.8.8.8|Find "TTL=">nul If %ErrorLevel%==0 ( Echo Online ) Else ( Echo Offline ) Ещё, как вариант - можно использовать GnuWin32 wget и тянуть google.com/favicon.ico, а затем проверять на наличие файла (ключами указать несколько попыток и достаточный таймаут) |
|
Последний раз редактировалось Anonymоus, 20-12-2011 в 12:28. Отправлено: 12:23, 20-12-2011 | #29 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Цитата Diskretor:
Anonymоus, Извиняюсь, но ничего не понял... Можно как для ламера разжевать? |
|
Отправлено: 21:51, 20-12-2011 | #30 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Автоматический перезапуск программы | 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 |
|