Esta é a única solução que funciona para VPNs com a máquina cliente sendo o Windows Vista ou o Windows 7 , já que outras respostas listadas simplesmente não funcionam. Essa resposta foi excluída anteriormente e não deveria ter sido, pois essa é a única solução para um caso comum do mundo real. Como não há recurso disponível para a exclusão, estou repassando para salvar outras pessoas da frustração que tive ao tentar usar as outras respostas.
O exemplo abaixo descobre quais IPs na VPN que possuem o VNC / port 5900 aberto com o cliente em execução no Windows 7.
Um pequeno script em Python (v2.6.6) para verificar uma determinada lista de IPs e Portas:
from socket import *
fTimeOutSec = 5.0
sNetworkAddress = '192.168.1'
aiHostAddresses = range(1,255)
aiPorts = [5900]
setdefaulttimeout(fTimeOutSec)
print "Starting Scan..."
for h in aiHostAddresses:
for p in aiPorts:
s = socket(AF_INET, SOCK_STREAM)
address = ('%s.%d' % (sNetworkAddress, h))
result = s.connect_ex((address,p))
if ( 0 == result ):
print "%s:%d - OPEN" % (address,p)
elif ( 10035 == result ):
#do nothing, was a timeout, probably host doesn't exist
pass
else:
print "%s:%d - closed (%d)" % (address,p,result)
s.close()
print "Scan Completed."
Os resultados pareciam:
Starting Scan...
192.168.1.1:5900 - closed (10061)
192.168.1.7:5900 - closed (10061)
192.168.1.170:5900 - OPEN
192.168.1.170:5900 - closed (10061)
Scan Completed.
As quatro variáveis na parte superior precisariam ser alteradas para serem apropriadas para qualquer tempo limite, rede, hosts e portas necessárias. 5.0 segundos na minha VPN pareciam ser o suficiente para funcionar adequadamente de forma consistente, menos não (sempre) dar resultados precisos. Na minha rede local, 0,5 foi mais que suficiente.