Показать полную графическую версию : [решено] Bat файл мониторинга подключения
Здравствуйте!
Можно ли сделать bat файл, который проверял, не отвалилась ли сеть, например пингуя гугл или яндекс и, если отвалилась, то включал подключение по локальной сети (наверное через devcon). А если все нормально, то ничего больше не делал.
Суть проблемы:
Идет автоматический сбор статистики, иногда (раз в несколько дней) слетает сеть, переходит в состояние "отключено" и больше не включается, это очень плохо, т.к. дальше все идет в тар-тара-рары и сбор заканчивается.
Требуется бат или vbs файл, который единовременно проверял бы активность подключения, в случае его отсутствия включал бы сеть, а в случае его присутствия просто бы закрывался. Заранее больше спасибо!
Freeman256
11-07-2010, 05:42
Да, мне бы такой очень пригодился!
Petya V4sechkin
11-07-2010, 11:18
XXXp, воспользуйтесь фильтрами (http://tools.oszone.net/Vadikan/faq.html#filters) по названию темы по подключ.
http://oszone.net/user_img/050214130343/filters.png
Результат (http://forum.oszone.net/forumdisplay.php?f=102&filter_string=подключ&filter_by=title)
XXXp,
вопрос лучше ставить конкретнее: какая ОС, используется ли DHCP? И зачем обращаться к "железу"?
на пробу такой вариант (Static):
Echo off&Chcp 866&cmdow @ /hid&CLS(cmdow для скрытия окна)
:Control
Set $IPaddress=10.184.92.51 & Set $Mask=255.255.252.0
Set $gateway=10.184.92.1 & Set $gwmetric=256
Set $DNS_1=192.168.248.21 & Set $DNS_2=192.168.248.21
Set stop=600000 (задержка)
ping -n 1 kremlin.ru>nul
If ErrorLevel 0 (call :stop) else (
netsh interface ipv4 delete
netsh interface ipv4 set address "Local Area Connection" ^
static %$IPaddress% %$Mask% %$gateway% %$gwmetric%
netsh interface ipv4 set dns "Local Area Connection" ^
static %$DNS_1%
netsh interface ipv4 add dns "Local Area Connection" ^
static %$DNS_2%
snetsh interface ipv4 how config)
:stop
ping -n 2 -w %stop% kremlin.ru>nul
goto control
Если используется DHCP, то:
netsh interface ipv4 delete
snetsh interface ipv4 et address "Local Area Connection" source=dhcp
snetsh interface ipv4 et dns «Local Area Connection» dhcp
Информация: cmdow (http://www.commandline.co.uk/cmdow/) и Netsh (http://technet.microsoft.com/ru-ru/library/cc779693(WS.10).aspx)
Код не работает, суть совсем другая, нужно чтобы включал подключение по локальной сети, которое становится "выключено", а насколько я пока смог узнать это может только devcon
XXXp,
Код не работает, суть совсем другая..., нужно чтобы включал подключение по локальной сети, которое становится "выключено", а насколько я пока смог узнать это может только devcon
1. Devcon оперирует двумя состояниями устройств: "устройство используется" и "устройство отключено"
2. Если же само подключение имеет статус "Отключено", то не факт, что Devcon его не включит (специально проверил на двух PC!!!) и к тому же команда devcon restart сносит все настройки поключения (для STAT IP)
3. Для работы с частью *net* требуются утилиты netsh, ping, tracert и ipconfig, манипуляции непосредственно с подключением
позволяет осуществлять только netsh...
PS: Непосредственно (но без цикла проверки) этот код использую сам для переподключения после зависания маршрутизатора - все работает на "Ура"!
XXXp,
Решение для devcon, попробуй так:
Echo Off& Chcp 866
Echo.
ping -n 1 kremlin.ru>nul
If errorlevel 1 ((
for /f "tokens=2 delims=&" %%a in ('devcon listclass net') ^
do (
devcon disable *%%a* >nul
devcon enable *%%a* >nul
)
Echo Connection restarted !)) else (Echo Connection available!)
Echo.
Echo Push anykey to close
pause>nul
goto :eof
И вариант управления под WSH:
Set WshShell = CreateObject("WScript.Shell")
RetCode = WshShell.Run("ping -n 1 kremlin.ru", 0, True)
If RetCode = 1 Then
strNetConn = "Сетевые подключения"
strConn = "Подключение по локальной сети"
strEnable = "&Включить"
strDisable = "&Отключить"
Set objShell = CreateObject("Shell.Application")
Set objCP = objShell.Namespace(3)
For Each elem in objCP.Items
If elem.Name = strNetConn Then
Set colNetwork = elem.GetFolder
Exit For
End If
Next
Set Conn = Nothing
For Each clsConn in colNetwork.Items
If Instr(LCase(clsConn.name), LCase(strConn)) Then
Set Conn = clsConn
Exit For
End If
Next
If Conn Is Nothing Then
WScript.Echo "Network Connection not found"
WScript.Quit
End If
bEnabled = True
Set objEnable = Nothing
Set objDisable = Nothing
For Each clsVerb in Conn.verbs
If clsVerb.Name = strEnable Then
Set objEnable = clsVerb
bEnabled = False
End If
If clsVerb.name = strDisable Then
Set objDisable = clsVerb
End If
Next
objEnable.DoIt
strStatus = "enabled."
WScript.Sleep 1000
End If
WScript.Sleep 1000
Wscript.quit (1)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.