Пінгінг 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))
Незалежно від того, як ви збираєтеся генерувати ваш пакет "ping" UDP, ви хочете знати, чи отримала його ціль. Якщо цільовий порт відкритий (тобто служба прослуховується на даному порті), то те, що відбувається, буде визначено додатком. Сподіваємось, ви помітите певну поведінку чи вказівку з віддаленої системи.
Якщо цільовий порт закритий (тобто жодна служба не прослуховується на цьому порту), вам слід отримати відповідь пакета помилок ICMP у відповідь. Використовуйте улюблений нюховий мережевий sniffer, щоб стежити за ним. Або, можливо, ваша система HP-UX десь записує помилки ICMP (вибачте, я не маю досвіду роботи з HP-UX).
На жаль, якщо ціль скасовано, ви не зможете отримати відповідь, коли цільовий порт закритий. Єдиний надійний спосіб дізнатися, чи реагує віддалений хост, це запустити вашу залежну від UDP-програму програму та спостерігати за мережевим трафіком.