Il ping di una porta UDP è piuttosto complicato, poiché di per sé non ci sono connessioni . Se non hai il controllo sull'host remoto, potresti non sapere davvero se i tuoi datagrammi UDP vengono effettivamente ricevuti. Suppongo che si conosce già se l'host remoto è raggiungibile, via ping
, traceroute
, mtr
, ecc (In caso contrario, controllare che prima!)
Successivamente, poiché non hai netcat
, avrai bisogno di un modo per generare pacchetti UDP.
La bash
shell invia pacchetti UDP quando si reindirizzano i dati al dispositivo speciale /dev/udp/host/port
. Per esempio:
#!/bin/bash
host="10.10.10.10"
port=12345
echo "PING" >/dev/udp/$host/$port
Python, ovviamente, è anche pienamente in grado di UDP, ad es
#!/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))
Indipendentemente da come riesci a generare il tuo pacchetto "ping" UDP, vorrai sapere se il target lo ha ricevuto. Se la porta di destinazione è aperta (ovvero un servizio è in ascolto sulla porta specificata), ciò che accadrà sarà definito dall'applicazione. Spero che noterai qualche comportamento o indicazione dal sistema remoto.
Se la porta di destinazione è chiusa (ovvero nessun servizio è in ascolto su quella porta), allora dovresti ottenere un pacchetto di errori ICMP in risposta. Usa il tuo sniffer di rete a livello di filo preferito per guardarlo. Oppure, forse il tuo sistema HP-UX registra errori ICMP da qualche parte (mi dispiace, non ho alcuna esperienza con HP-UX).
Sfortunatamente, se la destinazione è protetta da firewall, potresti non ricevere una risposta quando la porta di destinazione è chiusa. L'unico modo infallibile per sapere se l'host remoto è reattivo è eseguire l'applicazione dipendente da dati UDP e controllare il traffico di rete.