Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Bat файл мониторинга подключения (http://forum.oszone.net/showthread.php?t=180316)

XXXp 11-07-2010 00:59 1451031

Bat файл мониторинга подключения
 
Здравствуйте!
Можно ли сделать bat файл, который проверял, не отвалилась ли сеть, например пингуя гугл или яндекс и, если отвалилась, то включал подключение по локальной сети (наверное через devcon). А если все нормально, то ничего больше не делал.
Суть проблемы:
Идет автоматический сбор статистики, иногда (раз в несколько дней) слетает сеть, переходит в состояние "отключено" и больше не включается, это очень плохо, т.к. дальше все идет в тар-тара-рары и сбор заканчивается.
Требуется бат или vbs файл, который единовременно проверял бы активность подключения, в случае его отсутствия включал бы сеть, а в случае его присутствия просто бы закрывался. Заранее больше спасибо!

Freeman256 11-07-2010 05:42 1451074

Да, мне бы такой очень пригодился!

Petya V4sechkin 11-07-2010 11:18 1451099

XXXp, воспользуйтесь фильтрами по названию темы по подключ.



Результат

deepred 11-07-2010 19:00 1451288

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 и Netsh

XXXp 12-07-2010 16:55 1451890

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

deepred 12-07-2010 18:37 1451968

XXXp,
Цитата:

Цитата XXXp
Код не работает, суть совсем другая...
читать дальше »
, нужно чтобы включал подключение по локальной сети, которое становится "выключено", а насколько я пока смог узнать это может только devcon

1. Devcon оперирует двумя состояниями устройств: "устройство используется" и "устройство отключено"
2. Если же само подключение имеет статус "Отключено", то не факт, что Devcon его не включит (специально проверил на двух PC!!!) и к тому же команда devcon restart сносит все настройки поключения (для STAT IP)
3. Для работы с частью *net* требуются утилиты netsh, ping, tracert и ipconfig, манипуляции непосредственно с подключением
позволяет осуществлять только netsh...

PS: Непосредственно (но без цикла проверки) этот код использую сам для переподключения после зависания маршрутизатора - все работает на "Ура"!



deepred 12-07-2010 19:13 1451992

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)



Время: 16:52.

Время: 16:52.
© OSzone.net 2001-