O ping de uma porta UDP é complicado, pois não há conexões em si. Se você não tiver controle sobre o host remoto, talvez nunca saiba realmente se seus datagramas UDP estão realmente sendo recebidos. Eu suponho que você já saiba se o host remoto está acessível, via ping
, traceroute
, mtr
, etc. (Se não, verifique primeiro!)
Em seguida, como você não tem netcat
, precisará de alguma forma de gerar pacotes UDP.
O shell bash
envia pacotes UDP quando você redireciona dados para o dispositivo especial /dev/udp/host/port
. Por exemplo:
#!/bin/bash
host="10.10.10.10"
port=12345
echo "PING" >/dev/udp/$host/$port
O Python, claro, também é totalmente capaz de UDP, por exemplo
#!/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))
Independentemente de como você deseja gerar seu pacote "ping" UDP, você vai querer saber se o alvo o recebeu. Se a porta de destino estiver aberta (ou seja, um serviço estiver escutando na porta especificada), o que acontecer será definido pelo aplicativo. Com sorte, você notará algum comportamento ou indicação do sistema remoto.
Se a porta de destino estiver fechada (ou seja, nenhum serviço estiver escutando nessa porta), você deverá obter um pacote de erro ICMP em resposta. Use o seu sniffer de rede de nível de fio favorito para assistir a ele. Ou, talvez, seu sistema HP-UX registre erros de ICMP em algum lugar (desculpe, eu não tenho nenhuma experiência com o HP-UX).
Infelizmente, se o destino for protegido por firewall, talvez você não receba uma resposta quando a porta de destino for fechada. A única maneira infalível de saber se o host remoto é responsivo é executar seu aplicativo dependente de dados UDP e observar o tráfego de rede.