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

12

Eu costumava usar um aplicativo que poderia 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?

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

cop1152
fonte

Respostas:

4

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 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

mrTomahawk
fonte
2
Meu entendimento é que o host remoto foi configurado para não responder aos pacotes de solicitação de eco ICMP, e não que o ping.exe no host local foi desativado. Como tal, isso não fará nada de diferente em executar o ping.exe, ou seja, nada.
9119 David Pashley
15

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)

Brent
fonte
6

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

Você ainda poderá testar as portas TCP ou 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, use 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.

David Rz Ayala
fonte
2
Arrefecer eu tive que usar isso em pod estivador ;-)
Amorphous
4

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


fonte
3

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

Não importa a 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, 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 há um host no outro extremo 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.

Só para completar esta, se não houver nenhum host na IP que você tente - ele vai travar por pouco tempo, e o tempo de espera - a mesma coisa que iria acontecer se o recebimento de acolhimento tinha um firewall com um filtro de queda.

Se houver firewalls envolvidos, como outros sugeriram, use ferramentas como nmape o que quer que seja.

Xerxes
fonte
3

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 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 qualquer lugar: D) Mas o lado negativo é que você deve estar dentro do mesma LAN que seu alvo de arping.

hayalci
fonte
1

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 está funcionando corretamente, mas mesmo assim escutando essa porta

Brettski
fonte
1

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

Vish
fonte
não sabia sobre o tcpconnect. Para as pessoas olhando para ele: packages.debian.org/tcputils
serverhorror
1

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.

Dan
fonte
1

scanner de rede com softperfect.

google para isso.

Eu uso isto muito. Funciona bem

therulebookman
fonte
1

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.

Neobyte
fonte
1

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

Stuart Woodward
fonte
1
Esta é realmente uma boa resposta e uma resposta muito correta. O SNMP é suficientemente baixo e pode ser configurado em sistemas Windows. É a única alternativa para ICMP e de fato rotineiramente usado por engenheiros de rede para monitorar roteadores e sistemas sobre WAN e LAN
Abhishek Dujari
1

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 ip_address port_number

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

MVnD3X
fonte
0

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


fonte
0

Uma abordagem muito simples é telnetar 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 no 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 o netcat .

Kyle Brandt
fonte
0

Scanner de porta de linha de comando PortQry da Microsoft, versão 2.0

Eu o uso para testar as portas do SQL Server frequentemente

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

jerryhung
fonte