Versucht, eine App zu starten, wenn eine Verbindung zu Office-VPN besteht


1

Ich kann StrComp nicht richtig zum Laufen bringen und bin mir nicht sicher warum. Kann jemand sehen, was ich hier falsch mache? (Alle IP-Nummern wurden geändert)

Option Explicit
Dim http : Set http = CreateObject( "MSXML2.ServerXmlHttp" )
Dim externalip

http.Open "GET", "http://icanhazip.com", False
http.Send
externalip = http.responseText

wscript.Echo externalip
wscript.Echo StrComp(externalip, "71.215.176.202")

if StrComp(externalip, "71.215.176.202") = 0 Then
  wscript.Echo "Connected to Comcast"
else
  wscript.echo "Connected to Office"
end if

Set http = Nothing

Dies gibt niemals 0 zurück, auch wenn externalip korrekt ist. Das Seltsame ist, dass es im externalip einen zusätzlichen CR / LF zu geben scheint. Ich habe versucht, die Trim-Funktion zu verwenden, aber das scheint nicht zu helfen. Hier ist ein Beispiel für die Ausgabe, während Sie mit dem Büro verbunden sind:

C:\BATFiles>cscript ip.vbs
Microsoft (R) Windows Script Host Version 5.812
Copyright (C) Microsoft Corporation. All rights reserved.

107.62.166.159

-1
Connected to Office

Und hier ist die Ausgabe bei Verbindung mit meinem lokalen ISP (Comcast)

C:\BATFiles>cscript ip.vbs
Microsoft (R) Windows Script Host Version 5.812
Copyright (C) Microsoft Corporation. All rights reserved.

71.215.176.202

1
Connected to Office

Ich weiß aus der Ausgabe, dass ich nur überprüfen konnte, ob strcomp & gt; 0, aber die Office-IP kann sich ändern, je nachdem, zu welchem ​​Standort ich eine Verbindung herstelle, aber die IP auf meiner lokalen ist ziemlich statisch. Und ich bin mir nicht ganz sicher, wie -1 und 1 beim String-Vergleich entschieden werden. Macht es einen Längenvergleich?

Antworten:


1

http://icanhazip.com gibt die IP mit einem Zeilenvorschubzeichen am Ende zurück (beachten Sie, dass in Ihren Beispielen eine Zeile zwischen der IP-Adresse und -1 oder 1 steht).

Verwenden Sie dies stattdessen:

externalip = replace(http.responseText, chr(10), "")

Dadurch wird der Zeilenvorschub durch nichts ersetzt und der Vergleich sollte korrekt sein.

Um Ihre Frage zu beantworten, basieren -1 0 und 1 auf der Sortierung der Zeichenfolgen. ZB kommt 0 vor 1, Sie würden also -1 bekommen. T kommt nach A, also würden Sie 1 bekommen. T = T, also würden Sie 0 bekommen


Perfekt! Vielen Dank! Ich wusste, dass es etwas mit der Leerzeile zu tun hatte, war mir aber nicht sicher, was das Problem war. Und danke für die Erklärung, wie StrCompare funktioniert.
user2021539
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.