it-swarm-pt.tech

Como posso determinar se uma máquina está online sem usar ping?

Eu costumava usar um aplicativo que podia executar ping ou talvez executar uma verificação de porta em uma máquina, mesmo que a máquina estivesse configurada para não permitir.

Atualmente, estou tentando executar ping em uma máquina remota em nossa WAN, mas configurei a máquina para não permitir ping. Existe algo semelhante ao ping que eu possa usar?

Mais uma vez, é uma máquina localizada em outra cidade que faz parte da nossa wan.

12
cop1152

Se você estiver usando XP/2003 + (isso inclui Vista/2008/7), poderá usar o Win32_PingStatus . As máquinas nas quais o código de script está executando é o único sistema que precisa ser o XP/2003 +, e funciona exatamente como o Ping.exe, mas não o ping.exe, portanto, deve funcionar como uma brecha na sua configuração de segurança, que não permite a execução de ping.exe.

strComputer = "192.168.1.1"
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery _
    ("Select * from Win32_PingStatus " & _
        "Where Address = '" & strComputer & "'")
For Each objItem in colItems
    If objItem.StatusCode = 0 Then 
        WScript.Echo "Reply received."          
    End If
Next

Consulte o artigo da Equipe de script para obter mais informações sobre como usar o Win32_PingStatus:

http://www.Microsoft.com/technet/scriptcenter/resources/qanda/sept04/hey0914.mspx

4
mrTomahawk

Você pode telnetar para uma porta TCP aberta na máquina. Por exemplo, se a máquina for um servidor da web e tiver a porta 80 aberta, apenas:

telnet ip.ad.dre.ss 80

Isso funcionará mesmo em portas criptografadas (embora você não consiga entender os dados)

Algumas outras portas para tentar são:

  • 443 para um servidor https
  • 22 para ssh

(existe uma lista de portas/serviços em / etc/services em máquinas Linux)

15
Brent

O ping é ICMP, se você bloqueou o ICMP, não poderá executar ping.

Você ainda poderá testar TCP ou portas UDP se estiver aceitando conexões TCP/UDP.

Se você estiver executando seu teste em contêineres que não possuem ping, nc, telnet e outras ferramentas, poderá usar este truque:

(echo >/dev/tcp/${Host}/${port}) &>/dev/null && echo "open" || echo "closed"

Isso tentará se conectar através do tcp/udp através do dispositivo (uau, eu sei) e ecoará "aberto" se a porta estiver aberta ou "fechada" se estiver fechada.

Ele ficará travado por um tempo antes de ecoar "fechar" quando for esse o caso.

6
David Rz Ayala

Execute um agente SNMP na máquina remota e use um gerente para ler um dos valores do MIB padrão.

4
user640

Se você não tiver firewalls e roteadores no caminho, ou seja, se você estiver no mesmo segmento que o Host que está tentando verificar - a maioria das soluções acima são um pouco exaustivas.

Não importa a que porta você se conecta e, de fato, se você se conectar a uma porta que provavelmente não terá um serviço em execução, poderá executar o trabalho sem ser detectado.

Quão?

Você pode usar qualquer ferramenta que desejar, mas podemos apenas usar o telnet ...

% telnet <Host> 313373
Trying 10.211.55.3...
telnet: connect to address 10.211.55.3: Connection refused
telnet: Unable to connect to remote Host
%

Isso deve acontecer imediatamente, a menos que o host esteja descartando pacotes. O que realmente está acontecendo é que a pilha TCP/IP no host está enviando de volta um segmento TCP com o conjunto de bits RST - ou seja, finalizando o pacote SYN).

O fato de você ter recebido um pacote RST significa que realmente existe um host na outra extremidade e como um bônus - você o fez sem ser detectado (o TCP/IP não tinha um aplicativo da camada superior para conversar sobre essa conexão) .

Em vez de telnet, no entanto, eu provavelmente usaria algo como scapy, escrevi algo que procura a bandeira RST e o informamos.

Apenas para concluir isso, se não houver Host no IP que você tentar - ele ficará travado por um tempo e o tempo limite - será o mesmo que aconteceria aconteceria se o Host receptor tivesse um firewall com um filtro de gota.

Se houver firewalls envolvidos, como outros sugeriram, use ferramentas como nmap e qualquer outra coisa.

3
Xerxes

Se você tiver acesso a outra máquina na mesma LAN da sua máquina de destino, poderá usar arping .

O arping funciona enviando pacotes ARP direcionados à máquina, isso funciona perfeitamente porque você não pode bloquear pacotes arp se quiser usar a rede (bem, você pode configurar tabelas arp estáticas em qualquer lugar: D) Mas a desvantagem é que você deve estar dentro do mesma LAN que seu alvo de arping.

3
hayalci

scanner de rede com softperfect.

google para isso.

Eu uso isto muito. Funciona bem

1
therulebookman

Você pode fazer com que a máquina envie uma armadilha snmp (pacote) uma vez por minuto para um monitor remoto e defina uma regra para monitorar se você está recebendo a armadilha a cada minuto.

1
Stuart Woodward

Google para "nmap". Eu uso isso o tempo todo. Ótimo para verificar se seus firewalls também estão funcionando conforme o esperado. Além disso, acredito que foi referenciado em um filme de Matrix, o que o torna duplamente incrível.

1
Neobyte

A solução simples para esse problema será usar o utilitário netcat. O único pré-requisito para esse cenário é que você deve estar ciente de pelo menos uma porta aberta nessa máquina remota.

nc -nv endereço_ip_número da porta

O comando acima fornecerá um resultado, que determinaria se a referida porta está aberta ou não e, portanto, a disponibilidade da máquina

1
MVnD3X

Existem serviços disponíveis na máquina? Uma maneira de verificar se existe uma máquina é usar o cliente telnet para conectar-se a ela, mas alterando a porta que você precisa acessar.

Então, digamos que a máquina esteja executando o MS SQL, que é executado na porta 1433 por padrão. Você usa o seguinte comando

telnet machine-name-address 1433

Se o Telnet conectar a máquina à instalação, isso não significa que ela esteja funcionando corretamente, mas mesmo assim ouvindo essa porta

1
Brettski

para i em seq 1 65535; tcpconnect -v remotehost $ i; feito

1
Vish

nmap -T5 -sS -P0 ho.st.ip.addr Isso verá o que há de portas disponíveis nessa máquina. Recomende a instalação do cygwin se você estiver executando o Windows ou não tiver acesso a uma máquina Linux.

1
Dan

Próprio da Microsoft Scanner de porta de linha de comando PortQry Versão 2.0

Eu o uso para testar as portas do SQL Server frequentemente

porta aberta = OUVIDO ou NÃO OUVIDO firewall = FILTRADO

0
jerryhung

Uma abordagem muito simples é telnet para uma porta TCP que deve estar aberta no servidor, ou seja:

telnet theServerHostname 80

Embora se o serviço estiver inoperante, você obterá o mesmo resultado como se o Host estivesse inoperante.

Existem todos os tipos de varreduras que podem ser feitas com o nmap, aprenda sobre elas em site do nmap e você deve se tornar um especialista em como testar se um host está ativo. Isso inclui o uso de protocolos diferentes de icmp (ping), como TCP (como o telnet)) e UDP.

Além disso, se você quiser algo que inclua a capacidade de se conectar ao udp, que seja semelhante ao telnet nesse sentido, considere netcat .

0
Kyle Brandt

Você pode instalar um servidor web simples e usar uma página da web dizendo "ONLINE". Você só precisa se conectar a ele onde quiser. Claro que você precisa de um statin ip ou services linke dyndns

0
jlan