Posible "ping" url: puerto? (OS X-GeekTool)

20

Estoy tratando de usar GeekTool (panel de preferencias de Mac ... básicamente solo incrusta la salida de un comando / script de shell en el escritorio ... http://lifehacker.com/#!244026/geek-to-live--monitor -su-mac-y-más-con-geektool ) para monitorear máquinas / servidores remotos, y tengo algunos problemas para determinar la mejor manera de verificar si una máquina está arriba / abajo.

Estoy usando no-ip como un redireccionamiento de dns gratuito ... pero esto solo me ayuda con la IP pública del enrutador. La máquina que quiero está detrás del enrutador y, por lo tanto, no se puede "hacer ping" directamente.

Tengo el reenvío de puertos configurado para el puerto 8080 que conduce a la máquina que quiero. ¿Hay alguna manera de hacer ping esencialmente a través del puerto 8080 para ver si la máquina está en funcionamiento? Intenté telnet, pero aparentemente esto no funciona (en cuanto a la salida) en GeekTool. Estoy ejecutando un sitio web en 8080, así que supongo que solo quiero saber si / cuándo se cae.

Gracias de antemano ... si puedo proporcionar más aclaraciones, hágamelo saber.

(descubrí mi problema ... ver abajo)

loeschg
fuente
2
pinges un protocolo ICMP, mientras que los puertos son conceptos TCP y UDP. Los 3 son protocolos distintos además de IP. Eso significa que un paquete IP que contiene TCP no puede contener ICMP y viceversa. También significa que el encabezado TCP (con el puerto) no está presente en un paquete de ping ICMP.
MSalters

Respuestas:

24

Para verificar un puerto específico, puede usar telnet:

telnet 127.0.0.1 8080

(El puerto sigue la IP / nombre de host con un espacio, no dos puntos).

Si obtiene un error inmediato, el puerto no está disponible. Si telnet se bloquea, entonces se ha conectado con éxito al puerto. Ctrl+ Cpara matar telnet, entonces.

Sin embargo, esto puede o no ayudar con el problema del reenvío de puertos. Simplemente te lleva a esa IP y puerto.

Garfio
fuente
Esto haría el trabajo ... pero no funciona con GeekTool: /. Agradezco la ayuda.
loeschg
2
Es posible que deba ejecutar brew install telnetpara instalar telnet.
Lucas Bustamante el
6

Hay una utilidad hping que le permite hacer ping a los puertos TCP. Esto también está disponible a través de homebrew (brew install hping).

backdrift.org brinda instrucciones simples sobre cómo usar hping para este propósito

$ hping -S -p 80 google.com
HPING google.com (eth0 66.249.92.104): S set, 40 headers + 0 data bytes
len=44 ip=66.249.92.104 ttl=47 id=10442 sport=80 flags=SA seq=0 win=5720 rtt=97.7 ms
len=44 ip=66.249.92.104 ttl=47 id=40838 sport=80 flags=SA seq=1 win=5720 rtt=97.7 ms
len=44 ip=66.249.92.104 ttl=47 id=64607 sport=80 flags=SA seq=2 win=5720 rtt=97.7 ms
len=44 ip=66.249.92.104 ttl=47 id=10443 sport=80 flags=SA seq=3 win=5720 rtt=97.7 ms
^C
--- google.com hping statistic ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 97.7/97.7/97.7 ms
Juha Palomäki
fuente
0

Puede usar wget, curletc. para verificar que el sitio web está respondiendo.

Neil
fuente
1
Esto solo puede verificar un puerto de servicio web.
244boy
@ 244boy La pregunta decía "Estoy ejecutando un sitio web en 8080", así que pensé que era una forma razonable de verificar.
Neil
0

Telnet hace el trabajo, pero no puedo integrarlo con GeekTool. Terminé haciendo un ping de mysqladmin a la máquina remota . El sitio web tiene un backend db, por lo que esto (más o menos) devuelve la información que estoy buscando. ¡Gracias por toda la ayuda!

loeschg
fuente