Win32_PingStatus или что-нибудь другое
Везде, где только не искал, проверка доступности интернета (VBS+WMI) производится с помощью:
Код:
"...FROM Win32_PingStatus..."
Вопрос: а есть другие варианты?
Потому что этот, так же как и, просто CMD-команда: Не будут корректно работать если ОС находится за NAT-ом.
Задача: проверить доступность www.google.com
Условие: компьютер находится за NAT
Пример скрипта:
Код:
iPing = Ping("www.google.com")
If iPing=0 Then
WScript.Echo "Интернет есть"
Else
WScript.Echo "Интернета НЕТ"
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
|
Цитата:
Цитата semen77
Потому что этот, так же как и, просто CMD-команда:
Не будут корректно работать если ОС находится за NAT-ом. »
|
Почему Вы так решили?
P.S. Лучше использовать такой код:
читать дальше »
Код:
Option Explicit
If IsConnected("www.google.com") Then
' Place your code here…
End If
WScript.Quit 0
'=============================================================================
'=============================================================================
Function IsConnected(strAddress)
Dim objSWbemObjectEx
IsConnected = False
For Each objSWbemObjectEx In GetObject( _
"winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery( _
"SELECT * FROM Win32_PingStatus WHERE Address = '" & strAddress & "'")
With objSWbemObjectEx
If Not IsNull(.StatusCode) And .StatusCode = 0 Then
IsConnected = True
End If
End With
Exit For
Next
Set objSWbemObjectEx = Nothing
End Function
'=============================================================================
|
Я тестировал оба варианта на виртуалках с nat-ом
P.S.: а вот и ваш вариант:
Знаю, что проблема связана с трансляцией ICMP-пакетов, но может быть уже кто-то решил её?
|
semen77, ну, так дело ж не в NAT получается, а в непрохождении пакетов определённого вида, как Вы верно заметили. Пинайте своего администратора.
|
Цитата:
Цитата Iska
а в непрохождении пакетов определённого вида »
|
Это "стандартная болезнь" архитектуры NAT, которая умеет правильно транслировать только TCP и UDP пакеты.
Поэтому и спрашивал - может кто-то уже придумал "костыли"...
|
Время: 11:05.
© OSzone.net 2001-