O ping de uma porta UDP é meio complicado, pois não há conexões , por si só. 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á sabe se o host remoto está acessível, via ping
, traceroute
, mtr
, etc. (Se não, verifique se em primeiro lugar!)
Em seguida, como você não possui netcat
, precisará de uma maneira de gerar pacotes UDP.
O bash
shell 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ê conseguir gerar seu pacote "ping" UDP, você desejará saber se o destino 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. Felizmente, você notará algum comportamento ou indicação do sistema remoto.
Se a porta de destino estiver fechada (ou seja, nenhum serviço está escutando nessa porta), você deverá receber um pacote de erro ICMP de volta em resposta. Use seu sniffer de rede no nível do fio favorito para assistir. Ou talvez seu sistema HP-UX registre erros ICMP em algum lugar (desculpe, eu não tenho nenhuma experiência com o HP-UX).
Infelizmente, se o destino estiver protegido por firewall, você poderá não receber uma resposta quando a porta de destino estiver fechada. A única maneira certa de saber se o host remoto é responsivo é executar o aplicativo dependente de dados UDP e observar o tráfego da rede.