Проверка связи с портом UDP довольно сложна, так как соединений как таковых нет. Если у вас нет контроля над удаленным хостом, вы никогда не узнаете, действительно ли принимаются ваши дейтаграммы UDP. Я предполагаю , что вы уже знаете , доступен ли удаленный хост, через ping
, traceroute
, mtr
и т.д. (Если нет, проверьте , что первым!)
Далее, поскольку у вас его нет netcat
, вам понадобится способ генерации пакетов UDP.
bash
Оболочка посылает пакеты UDP при перенаправлении данных на специальное устройство /dev/udp/host/port
. Например:
#!/bin/bash
host="10.10.10.10"
port=12345
echo "PING" >/dev/udp/$host/$port
Python, конечно, также полностью поддерживает UDP, например
#!/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))
Независимо от того, как вы пытаетесь сгенерировать UDP-пакет «ping», вам нужно знать, получил ли его целевой объект. Если целевой порт открыт (то есть служба прослушивает данный порт), то, что произойдет, будет определяться приложением. Надеюсь, вы заметите какое-то поведение или индикацию из удаленной системы.
Если целевой порт закрыт (т. Е. Ни один сервис не прослушивает этот порт), вы должны получить в ответ пакет ошибок ICMP. Используйте ваш любимый анализатор проводной сети, чтобы следить за ним. Или, возможно, ваша система HP-UX где-то регистрирует ошибки ICMP (извините, у меня нет опыта работы с HP-UX).
К сожалению, если цель защищена огнем, вы можете не получить ответ, когда целевой порт закрыт. Единственный надежный способ узнать, реагирует ли удаленный хост, - запустить приложение, зависящее от данных UDP, и наблюдать за сетевым трафиком.