I want to know if a HP-UX machine can communicate to a remote machine (which I don't have control over) on a particular port using UDP.
I tried telnet, but it doesn't look like it supports UDP. I would use netcat, but I was unable to find any bundle. This machine is in production so I don't want to mess around compliling or installing things too much... (nmap, netcat from source...)
Any simple way to do this?
Pinging a UDP port is kind of tricky, since there are no connections, per se. If you don't have control over the remote host, then you might never really know whether your UDP datagrams are actually being received. I assume you already know whether the remote host is reachable, via
ping
,traceroute
,mtr
, etc. (If not, check that first!)Next, since you don't have
netcat
, you'll need some way of generating UDP packets.The
bash
shell sends UDP packets when you redirect data to the special device/dev/udp/host/port
. For example:Python, of course, is also fully capable of UDP, e.g.
Regardless of how you contrive to generate your UDP "ping" packet, you'll want to know whether the target received it. If the target port is open (i.e. a service is listening at the given port), then what happens will be application-defined. Hopefully, you will notice some behaviour or indication from the remote system.
If the target port is closed (i.e. no service is listening at that port), then you should get an ICMP error packet back in response. Use your favourite wire-level network sniffer to watch for it. Or, perhaps your HP-UX system logs ICMP errors somewhere (sorry, I don't have any experience with HP-UX).
Unfortunately, if the target is firewalled, you may not get a response when the target port is closed. The only surefire way to know if the remote host is responsive is to run your UDP-data-dependent application and watch the network traffic.
You can use
netcat
. In OSX, this is my command: