Das Pingen eines UDP-Ports ist etwas schwierig, da per se keine Verbindungen bestehen . Wenn Sie keine Kontrolle über den Remote-Host haben, wissen Sie möglicherweise nie wirklich, ob Ihre UDP-Datagramme tatsächlich empfangen werden. Ich nehme an, Sie wissen bereits, ob die Remote - Host erreichbar ist , über ping
, traceroute
, mtr
usw. (Wenn nicht, prüfen Sie, ob zuerst!)
Da dies nicht der netcat
Fall ist, müssen Sie zunächst UDP-Pakete generieren.
Die bash
Shell sendet UDP-Pakete, wenn Sie Daten an das spezielle Gerät umleiten /dev/udp/host/port
. Beispielsweise:
#!/bin/bash
host="10.10.10.10"
port=12345
echo "PING" >/dev/udp/$host/$port
Python ist natürlich auch voll UDP-fähig, z
#!/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))
Unabhängig davon, wie Sie Ihr UDP-Ping-Paket generieren, möchten Sie wissen, ob das Ziel es empfangen hat. Wenn der Zielport offen ist (dh ein Dienst überwacht den angegebenen Port), wird das, was passiert, anwendungsspezifisch festgelegt. Hoffentlich werden Sie ein Verhalten oder einen Hinweis vom Remote-System bemerken.
Wenn der Zielport geschlossen ist (dh, dass kein Dienst an diesem Port empfangsbereit ist), sollten Sie als Antwort ein ICMP-Fehlerpaket zurückerhalten. Verwenden Sie Ihren bevorzugten drahtgebundenen Netzwerk-Sniffer, um danach zu suchen. Oder vielleicht protokolliert Ihr HP-UX-System ICMP-Fehler irgendwo (ich habe leider keine Erfahrung mit HP-UX).
Wenn das Ziel über eine Firewall verfügt, erhalten Sie möglicherweise keine Antwort, wenn der Zielport geschlossen wird. Der einzige sichere Weg, um festzustellen, ob der Remote-Host reagiert, besteht darin, Ihre UDP-datenabhängige Anwendung auszuführen und den Netzwerkverkehr zu überwachen.