Tentando iniciar um aplicativo se conectado à VPN do escritório

1

Eu não consigo que o StrComp funcione corretamente e não sei por quê. Alguém pode ver o que eu poderia estar fazendo errado aqui? (todos os números de IP foram alterados)

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

Isso nunca retornará 0, mesmo quando o externalip estiver correto. O estranho é que parece haver um CR / LF extra no externalip. Eu tentei usar a função Trim, mas isso não parece ajudar. Aqui está um exemplo da saída enquanto conectado ao escritório:

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

E aqui está a saída quando conectado ao meu ISP local (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

Eu sei da saída que eu poderia apenas verificar se o strcomp retorna > 0, mas o ip do office está sujeito a alterações, dependendo de qual local eu estou me conectando, mas o IP no meu local é praticamente estático. E não tenho certeza de como -1 e 1 são decididos ao fazer uma comparação de string. Está fazendo uma comparação de comprimento?

    
por user2021539 24.12.2015 / 14:33

1 resposta

1
O

link está retornando o IP com um caractere de alimentação de linha no final (noticee em seus exemplos, há uma linha entre o endereço IP e -1 ou 1).

Use isso:

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

Isso substituirá o feed de linha por nada e deve ser comparado corretamente.

Para responder à sua pergunta, -1 0 e 1 são baseados em como as strings são classificadas. EG, 0 vem antes de 1, então você teria -1. T vem depois de A, então você teria 1. T = T, então você teria 0

    
por 24.12.2015 / 14:41

Tags