No estoy interesado en las redes, y tengo la siguiente pregunta relacionada con el comando ping de Linux .
¿Solo puedo hacer ping a una dirección? Por ejemplo:
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
¿O también puedo hacer ping a una dirección: puerto , por ejemplo: onofri.org:80 ?
Si intento este no funciona:
miner@raspberrypi ~ $ ping onofri.org:80
ping: unknown host onofri.org:80
¿Es posible hacer ping a algo como la dirección: puerto ? Si es posible, ¿por qué no funciona lo que intenté?
linux
networking
ping
AndreaNobili
fuente
fuente
GET /index.html HTTP\1.1
y ver la respuesta 200 (o código de error) junto con el marcado resultante.HTTP\1.1
? De Verdad?HTTP/1.1
...Respuestas:
Puede usar Paping , una prueba de puerto TCP multiplataforma, que emula la funcionalidad de ping (ping de puerto)
(vea también Github como code.google.com se ha depreciado)
fuente
paping
? He visitado el repositorio pero no hay lanzamientos. Ah, no importa ... el código de Google no estaba disponible para mí en ese momento.Los puertos son un concepto de UDP y TCP . Los mensajes de ping se conocen técnicamente como solicitud de eco ICMP y respuesta de eco ICMP, que son parte de ICMP . ICMP, TCP y UDP son "hermanos"; no se basan el uno en el otro, sino que son tres protocolos separados que se ejecutan sobre IP.
Por lo tanto, no puede
ping
un puerto. Lo que puedes hacer es usar un escáner de puertos comonmap
.También puede usar
telnet onofri.org 80
, como se sugiere en una de las otras respuestas (dará un error si el puerto está cerrado o filtrado).fuente
Uso Telnet , ya que está integrado en muchas plataformas sin descargas adicionales.
Simplemente use el comando telnet para conectarse al puerto que desea probar. Si recibe el mensaje a continuación, o un mensaje del propio servicio, entonces el puerto está activo.
Si conoce la secuencia de comandos para el servicio al que se está conectando, puede escribir un comando ( HTTP / FTP GET, por ejemplo) y observar la respuesta y la salida en el terminal. Esto es muy útil para probar el servicio en sí, ya que le mostrará información de error enviada al cliente, como los errores HTTP 500.
Si recibe un mensaje de que se rechazó la conexión, el puerto está cerrado.
fuente
Sí, use HPing para hacer eso:
Tenga en cuenta que necesita privilegios de root (o capacidades de SELinux) para crear paquetes de IP sin procesar, al igual que el ping (que probablemente es suid en su sistema).
fuente
hping3
Es lo mismo quehping3
? @ d33tahhping3
y hace sonar todos los puertos ... No importa si está cerrado o abierto ... ¿Cómo puedo saber si un puerto está cerrado o abierto?Puede usar netcat para conectarse a un puerto específico para ver si obtiene una conexión. El indicador -v aumentará la verbosidad para mostrar si el puerto está abierto o cerrado. El indicador -z hará que netcat se cierre una vez que tenga una conexión. Luego puede usar los códigos de salida a través de $? para ver si la conexión se estableció o no.
Además, puede usar mtr con el indicador -T para tcp y el indicador -P para especificar un puerto. Esto hará algo similar a un traceroute sobre TCP en lugar de solo ICMP. Sin embargo, esto puede ser excesivo.
suspiro Tengo que editar para agregar este bit, ya que no podemos poner código en los comentarios. Puede que Knoppix esté haciendo algo diferente con su versión de netcat, pero esto es lo que obtengo de Linux Mint
fuente
nc -z www.google.com 8000
puede tomar mucho tiempo, más de 5 segundos. Si lo hago-w 1
, me toma 5 segundos. Si lo hago-w 3
, me toma 3 veces más tiempo ... 15 parpadeos del cursor, 15 segundos.-w 1
está destinado a ser un segundo pero probado en cygwin.,. 5 segundos. Es súper rápido cuando hay un servidor en el puerto, pero un poco lento cuando no lo hay.También podría usar
nping
(parte denmap
):fuente
nping --tcp -p 80 localhost
Puede hacer esto en el shell con Python como un revestimiento no tan corto:
fuente
Solo como referencia, quería compartir una publicación de Vivek Gite: https://www.cyberciti.biz/faq/ping-test-a-specific-port-of-machine-ip-address-using-linux-unix/# comentario-920398
Enumera varias formas, algunas de las cuales ya están publicadas aquí. Pero lo más sorprendente para mí fue nada más que
bash
:O una versión súper simple: solo mirando la salida del siguiente patrón de comando:
Útil cuando se trabaja con contenedores acoplables aleatorios.
fuente
looking at the output
- Solo inspeccionar el código de retorno$?
puede ser útil. También se cuelga en puertos cerrados, puede haber algún tiempo de espera se puede configurar en cualquier lugar ...echo >/dev/tcp/{hostname}/{portnumber}
no termina cuando el puerto está cerrado. Yecho >/dev/tcp/{hostname}/{portnumber}
no muestra nada a pesar de que el puerto está abierto y puedo verlo en un navegador.Connection refused
. De lo contrario, sale sin mostrar nada yecho $?
mostrando el código de salida1
Añado
watch
herramienta aquí:watch nmap -p22,80 google.com
fuente
Es simple con
nmap
ejemplos:
Para más información vea esto:
escriba en la línea de comando esto:
man nmap
http://www.cyberciti.biz/networking/nmap-command-examples-tutorials/ http://www.tecmint.com/nmap-command-examples/
fuente
¿Está intentando probar la comunicación u obtener una respuesta del puerto 80 en ese nodo?
PING
intentará establecer comunicación con un host específico a través de ICMP que no tiene nada que ver con los puertos.En su lugar, intente http://nmap.org/ para verificar la información del puerto y probar la comunicación:
fuente