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

11

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

No momento, estou tentando fazer 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 posso usar?

Mais uma vez, esta é uma máquina localizada em outra cidade que faz parte do nosso wan.

    
por cop1152 28.05.2009 / 15:52

16 respostas

4

Se você estiver usando o XP / 2003 + (isso inclui o Vista / 2008/7), então você pode usar o Win32_PingStatus . As máquinas em que está executando o código de script é o único sistema que precisa ser o XP / 2003 +, e funciona da mesma forma que o Ping.exe, mas não está usando o ping.exe, portanto deve ser uma brecha na sua configuração de segurança. não permite a execução do 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 "Equipe de scripts" para mais informações sobre como usar o Win32_PingStatus:

link

    
por 28.05.2009 / 16:05
13

Você pode fazer telnet 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 seja capaz de entender os dados)

Algumas outras portas para tentar são:

  • 443 para um servidor https
  • 22 para ssh

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

    
por 28.05.2009 / 15:57
4

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

    
por 28.05.2009 / 16:01
3

Se você não tem 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 em qual 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, você poderá realizar o trabalho sem ser detectado.

Como?

Você pode usar qualquer ferramenta que quiser, mas podemos usar apenas 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, encerrando seu pacote SYN.

O fato de você ter recebido um pacote RST significa que realmente existe um host no outro lado, e como um bônus - você fez isso sem ser detectado (O TCP / IP não tinha nenhum aplicativo de camada superior para falar sobre esta conexão).

Em vez de usar o telnet, provavelmente usaria algo como scapy, escrevesse algo que parecesse o sinalizador RST e você saberia.

Só para concluir isso, se não houver um host no IP que você tente, ele ficará suspenso por um tempo, e o tempo limite - a mesma coisa que ocorreria se o host receptor tivesse um firewall com um filtro suspenso.

Se os firewalls estiverem envolvidos, como outros já sugeriram, use ferramentas como nmap e qualquer outra coisa.

    
por 28.05.2009 / 16:47
3

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

Arping funciona enviando pacotes ARP visando a 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 todos os lugares: D) Mas a desvantagem é que você precisa estar dentro da mesma LAN que o seu alvo de arping.

    
por 29.05.2009 / 01:03
1

Existe algum serviço disponível na máquina? Uma maneira de ver se uma máquina está lá é usar o cliente telnet para se conectar a ela, mas alterando a porta que você precisa atingir.

Então, vamos dizer que a máquina está 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 em funcionamento, não significa que esteja funcionando corretamente, mas mesmo assim escutando essa porta

    
por 28.05.2009 / 15:57
1

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

    
por 28.05.2009 / 16:02
1

nmap -T5 -sS -P0 ho.st.ip.addr Isso vai ver o que está disponível na porta dessa máquina .. Recomendamos instalar o cygwin se você estiver rodando no Windows ou não tiver acesso a uma máquina linux.

    
por 28.05.2009 / 16:17
1

scanner de rede com softperfect.

pesquise no Google.

Eu uso muito. Funciona muito bem

    
por 28.05.2009 / 17:24
1

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

    
por 28.05.2009 / 18:05
1

Você pode mandar a máquina enviar uma armadilha snmp (pacote) uma vez por minuto para um monitor remoto e configurar uma regra para monitorar se você está recebendo a armadilha a cada minuto.

    
por 29.05.2009 / 01:10
1

A solução simples para este problema será usar o utilitário netcat. Somente o pré-requisito para este cenário é que um deve estar ciente de pelo menos uma porta que está aberta nessa máquina remota.

nc -nv ip_address port_number

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

    
por 05.04.2018 / 05:29
0

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

    
por 28.05.2009 / 15:57
0

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

telnet theServerHostname 80

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

Existem todos os tipos de exames que podem ser feitos com o nmap, saiba mais sobre eles no site do nmap e você deve se tornar um especialista em como teste se um host estiver ativo. Isso inclui o uso de protocolos diferentes do icmp (ping), como o TCP (como o telnet) e o UDP.

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

    
por 28.05.2009 / 15:56
0

Scanner de portas de linha de comando PortQry da Microsoft

Eu uso para testar portas do SQL Server com frequência

porta aberta = OUVIR OU NÃO OUVIR firewall = FILTRADO

    
por 28.05.2009 / 17:00
0

Ping é ICMP, se você bloqueou o ICMP, você não pode pingar.

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

Se você está executando seu teste em containers, que não têm ping, nc, telnet e outras ferramentas, você pode usar este truque:

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

Isso tentará se conectar através do tcp / udp com o dispositivo (wow, eu sei) e ecoar "abrir" se uma porta estiver aberta na porta especificada ou "fechar" se estiver fechada.

Ele ficará suspenso por um tempo no caso "close".

    
por 23.07.2018 / 20:20

Tags