답변:
연결 이 없기 때문에 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
물론 파이썬은 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 데이터 종속 응용 프로그램을 실행하고 네트워크 트래픽을 감시하는 것입니다.