VBS: проверьте IP-адрес и откройте URL (но только один раз) - PullRequest
4 голосов
/ 12 сентября 2010

Я пытаюсь создать VBScript, который будет определять, подключен ли компьютер, на котором он работает, к нашей локальной сети, проверяя его IPv4-адрес (назначенный DHCP), а затем открывать определенный URL-адрес в зависимости от того,внутри или вне нашей сети.Скрипт будет в основном использоваться на ноутбуках, которые будут перемещаться между работой (10.12.90.0/22) и домом (обычно 192.168 / 23, но на самом деле это может быть что угодно).В обоих случаях мне нужно открыть основной URL только один раз, потому что почти всегда будет более одного сетевого адаптера (проводной / беспроводной / Bluetooth и т. Д.).

Приведенный ниже скрипт, кажется, работает, когда я его тестировал, но не будучи программистом, я не уверен, что есть лучший способ сделать это.В идеале я бы хотел избежать проверки связи с серверами из-за задержки.

strComputer = "."

strInternal = "http://intranet/"
strExternal = "http://www.mydomain.com/"

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled = True",,48)

For Each objItem in colItems
    strIPAddress = objItem.IPAddress(0)
    arrIPAddress = Split(strIPAddress, ".")

    If (arrIPAddress(0) = "10") And (arrIPAddress(1) = "12") Then
        ipChecked = 1
        Run strInternal
    Else
        If ipChecked = 1 Then
            WScript.Sleep(10)
        Else
            ipChecked = 1
            Run strExternal
        End If
    End If

Next

Sub Run(ByVal sFile)
Dim shell
    Set shell = CreateObject("WScript.Shell")
    shell.Run Chr(34) & sFile & Chr(34), 1, false
    Set shell = Nothing
End Sub

1 Ответ

1 голос
/ 15 июля 2011

Как насчет проверки, доступен ли внутренний веб-сайт, загрузить его, если он еще загружает общедоступный веб-сайт?Вы можете использовать такую ​​функцию:

Function UrlExists(xURL)
    On Error Resume Next
    Err.Clear
    Dim objXML

    Set objXML = CreateObject("Microsoft.XMLHTTP")
    objXML.Open "HEAD",xURL,False
    objXML.Send

    If Err.Number <> 0 Or objXML.Status <> 200 Then
        UrlExists = False
    Else
        UrlExists = True
    End If
    Set objXML = Nothing
End Function

и затем вызывать ее из основного сценария:

strInternal = "http://intranet/default.htm"       
strExternal = "http://www.mydomain.com/"  

If URLExists(strInternal) Then
 Run strInternal
Else
 Run strExternal 
End If  
...