Hacer ping a un puerto UDP es un poco complicado, ya que no hay conexiones , per se. Si no tiene control sobre el host remoto, es posible que nunca sepa realmente si sus datagramas UDP realmente se están recibiendo. Asumo que ya sabes si el host remoto es accesible, a través de ping
, traceroute
, mtr
, etc (Si no es así, compruebe que la primera!)
A continuación, como no tiene netcat
, necesitará alguna forma de generar paquetes UDP.
El bash
shell envía paquetes UDP cuando redirige los datos al dispositivo especial /dev/udp/host/port
. Por ejemplo:
#!/bin/bash
host="10.10.10.10"
port=12345
echo "PING" >/dev/udp/$host/$port
Python, por supuesto, también es totalmente capaz de UDP, por ejemplo
#!/bin/python
import socket
host="10.10.10.10"
port=12345
udp_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_sock.sendto('PING', (host, port))
Independientemente de cómo logre generar su paquete UDP "ping", querrá saber si el destino lo recibió. Si el puerto de destino está abierto (es decir, un servicio está escuchando en el puerto dado), entonces lo que suceda será definido por la aplicación. Con suerte, notará algún comportamiento o indicación del sistema remoto.
Si el puerto de destino está cerrado (es decir, ningún servicio está escuchando en ese puerto), entonces debería recibir un paquete de error ICMP en respuesta. Use su sniffer de red de nivel de cable favorito para vigilarlo. O tal vez su sistema HP-UX registra errores ICMP en alguna parte (lo siento, no tengo experiencia con HP-UX).
Desafortunadamente, si el objetivo tiene un cortafuegos, es posible que no obtenga una respuesta cuando el puerto objetivo está cerrado. La única forma segura de saber si el host remoto responde es ejecutar su aplicación dependiente de datos UDP y observar el tráfico de la red.