É possível fazer ping em um endereço: port?

198

Não estou em rede, e tenho a seguinte pergunta relacionada ao comando ping do Linux.

Posso apenas pingar um endereço? Por exemplo:

miner@raspberrypi ~ $ ping onofri.org
PING onofri.org (67.222.36.105) 56(84) bytes of data.
64 bytes from onofri.org (67.222.36.105): icmp_req=1 ttl=47 time=202 ms
64 bytes from onofri.org (67.222.36.105): icmp_req=2 ttl=47 time=206 ms
64 bytes from onofri.org (67.222.36.105): icmp_req=3 ttl=47 time=215 ms

Ou eu também posso pingar um endereço: port , por exemplo: onofri.org:80 ?

Se eu tentar este, não funciona:

miner@raspberrypi ~ $ ping onofri.org:80
ping: unknown host onofri.org:80

É possível pingar algo como address: port ? Se é possível, por que o que eu tentei não funciona?

    
por AndreaNobili 16.06.2014 / 20:17

11 respostas

19

Você pode usar Paping , um teste de porta TCP entre plataformas, emulando a funcionalidade de ping (porta ping)

(veja também O Github como code.google.com foi depreciado)

paping -p 80 google.com
    
por 21.01.2015 / 09:02
300

Portas são um conceito de UDP e TCP . As mensagens de ping são tecnicamente referidas como solicitação de eco do ICMP e ICMP Echo Reply que fazem parte de ICMP . ICMP, TCP e UDP são "irmãos"; eles não são baseados um no outro, mas são três protocolos separados que são executados em cima do IP.

Portanto, você não pode ping a port. O que você pode fazer é usar um scanner de porta como nmap .

nmap -p 80 onofri.org

Você também pode usar telnet onofri.org 80 , como sugerido em uma das outras respostas (Isso dará um erro se a porta for fechada ou filtrada).

    
por 16.06.2014 / 20:19
79

Eu uso o Telnet , pois ele é incorporado em muitas plataformas sem downloads adicionais.

Basta usar o comando telnet para se conectar à porta que você deseja testar. Se você receber a mensagem abaixo ou uma mensagem do próprio serviço, a porta estará ativa.

Minty16 ~ $ telnet localhost 139
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Se você conhece a sequência de comandos para o serviço ao qual está se conectando, você pode digitar um comando ( HTTP / FTP GET por exemplo) e observe a resposta e a saída no terminal. Isso é muito útil para testar o serviço em si, já que ele mostrará as informações de erro enviadas ao cliente, como erros HTTP 500.

Se você receber uma mensagem informando que a conexão foi recusada, a porta será fechada.

Minty16 ~ $ telnet localhost 5000
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
    
por 16.06.2014 / 20:24
42

Você pode usar o netcat para se conectar a uma porta específica para ver se você obtém uma conexão. O sinalizador -v aumentará o detalhamento para mostrar se a porta está aberta ou fechada. O sinalizador -z fará com que o netcat seja encerrado assim que tiver uma conexão. Você pode então usar os códigos de saída através de $? para ver se a conexão foi estabelecida ou não.

$ nc -zv localhost 22
localhost [127.0.0.1] 22 (ssh) open
$ echo $?
0
$ nc -zv localhost 23
localhost [127.0.0.1] 23 (telnet) : Connection refused
$ echo $?
1

Além disso, você pode usar mtr com o sinalizador -T para tcp e o sinalizador -P para especificar uma porta. Isso fará algo semelhante a um traceroute sobre TCP, em vez de apenas ICMP. Isso pode ser um exagero, no entanto.

suspiro Eu tenho que editar para adicionar este bit, já que não podemos colocar código nos comentários. O Knoppix pode estar fazendo algo diferente com sua versão do netcat, mas é isso que eu ganho com o Linux Mint

$ date;nc -z -w 1 www.google.com 8000;date
Fri Jun 20 15:55:26 PDT 2014
Fri Jun 20 15:55:27 PDT 2014
$ date;nc -z -w 4 www.google.com 8000;date
Fri Jun 20 15:55:33 PDT 2014
Fri Jun 20 15:55:37 PDT 2014

$ nc -h
[v1.10-40]
    
por 16.06.2014 / 23:15
41

Sim, use HPing para fazer isso:

$ sudo hping -S -p 80 google.com
HPING google.com (p5p1 77.237.27.37): S set, 40 headers + 0 data bytes
len=46 ip=77.237.27.37 ttl=58 id=25706 sport=80 flags=SA seq=0 win=29200 rtt=7.5 ms
len=46 ip=77.237.27.37 ttl=58 id=25707 sport=80 flags=SA seq=1 win=29200 rtt=7.4 ms
len=46 ip=77.237.27.37 ttl=58 id=25708 sport=80 flags=SA seq=2 win=29200 rtt=8.5 ms
len=46 ip=77.237.27.37 ttl=58 id=25709 sport=80 flags=SA seq=3 win=29200 rtt=7.8 ms
^C
--- google.com hping statistic ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 7.4/7.8/8.5 ms

Note que ele precisa de privilégios de root (ou recursos do SELinux) para criar pacotes IP brutos, assim como o ping (que é mais provável que seja suid no seu sistema).

    
por 17.06.2014 / 17:35
16

Você também pode usar nping (parte de nmap ):

$ nping -p 80 localhost

Starting Nping 0.6.00 ( http://nmap.org/nping ) at 2014-06-23 11:57 CEST
SENT (0.0015s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (0.0016s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (1.0027s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (1.0027s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (2.0038s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (2.0039s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (3.0050s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (3.0050s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (4.0061s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (4.0062s) Handshake with localhost:80 (127.0.0.1:80) completed

Max rtt: 0.032ms | Min rtt: 0.008ms | Avg rtt: 0.012ms
TCP connection attempts: 5 | Successful connections: 5 | Failed: 0 (0.00%)
Tx time: 4.00575s | Tx bytes/s: 99.86 | Tx pkts/s: 1.25
Rx time: 4.00575s | Rx bytes/s: 49.93 | Rx pkts/s: 1.25
Nping done: 1 IP address pinged in 4.01 seconds
    
por 23.06.2014 / 11:57
6

Você pode fazer isso em šhell com o Python como um não muito curto:

$ portping() { python <<<"import socket; socket.setdefaulttimeout(1); socket.socket().connect(('$1', $2))" 2> /dev/null && echo OPEN || echo CLOSET; }
$ portping 8.8.8.8 54
CLOSET
$ portping 8.8.8.8 53
OPEN
    
por 18.12.2015 / 23:11
3

Eu adiciono a ferramenta watch aqui:

watch nmap -p22,80 google.com

Every 2,0s: nmap -p22,80 google.com   Mon Jun 15 16:46:33 2015

Starting Nmap 6.40 ( http://nmap.org ) at 2015-06-15 16:46 NOVT
Nmap scan report for google.com (127.0.0.1)
Host is up (0.0012s latency).
rDNS record for 127.0.0.1: google.com
PORT     STATE  SERVICE
22/tcp open   ssh
80/tcp closed http

Nmap done: 1 IP address (1 host up) scanned in 0.18 seconds
    
por 15.06.2015 / 12:48
3

Apenas para referência, queria compartilhar um post do Vivek Gite: link

Ele lista várias maneiras, algumas das quais já estão postadas aqui. Mas o mais surpreendente para mim foi nada mais, mas bash :

(echo >/dev/tcp/{host}/{port}) &>/dev/null && echo "opened" || echo "closed"
(echo >/dev/udp/{host}/{port}) &>/dev/null && echo "opened" || echo "closed"
(echo >/dev/tcp/www.cyberciti.biz/22) &>/dev/null && echo "Opened 22" || echo "Closed 22"
(echo >/dev/tcp/www.cyberciti.biz/443) &>/dev/null && echo "Opened 443" || echo "Closed 443"

Ou uma versão super simples: basta olhar para a saída do seguinte padrão de comando:

echo >/dev/{tcp|udp}/{host}/{port}

Útil ao trabalhar com contêineres aleatórios do Docker.

    
por 06.06.2017 / 15:07
2

Você está tentando testar a comunicação ou obter uma resposta da porta 80 nesse nó? PING tentará estabelecer comunicação com um host específico através do ICMP que não tem nada a ver com portas.

Em vez disso, tente o link para verificar as informações da porta e testar a comunicação:

nmap -v -p 80 onofri.org
    
por 19.06.2014 / 17:58
2

É simples com nmap

exemplos:

#sintaxis
nmap -p [port] hostName
#first is command, after scan ports, type port - port or range ports, and ip or name of website...

## Scan port 80
nmap -p 80 onofri.org

## Scan TCP port 80
nmap -p T:80 onofri.org

## Scan UDP port 53
nmap -p U:53 onofri.org

## Scan two ports ##
nmap -p 80,443 onofri.org

## Scan port ranges ##
nmap -p 80-200 onofri.org

## Combine all options ##
nmap -p U:53,111,137,T:21-25,80,139,8080 onofri.org
nmap -p U:53,111,137,T:21-25,80,139,8080 server1.cyberciti.biz
nmap -v -sU -sT -p U:53,111,137,T:21-25,80,139,8080 onofri.org

## Scan all ports with * wildcard ##
nmap -p "*" 192.168.1.1

## Scan top ports i.e. scan $number most common ports ##
nmap --top-ports 5 onofri.org
nmap --top-ports 10 onofri.org

Para mais informações, veja isto:

digite na linha de comando isto: man nmap

link link

    
por 25.07.2016 / 20:26