Verify Network Port Access
There are several tools you can use to verify access to a remote network port: nc
, tcping
, telnet
. Unfortunately, nc
from the netcat
package has been replaced by the one from nmap
, which lacks the -z
option, making it useless for non-interactive applications.
A partial workaround with nc
is to use the timeout flags:
nc -v -i1 -w1 192.168.12.33 22
Unfortunately, this method lends itself poorly to automation as on occasion it tends to hang and needs to be ran with the timeout
commands and that adds another layer of complexity.
The tcping
still works, but it’s an add-on package and it’s old, so some time soon it may disappear. The telnet
is probably not going anywhere, but it’s also an add-on and not good for automated queries.
The answer is to use an all-Bash solution as shown below. In case you’re wondering about the sleep
and kill
stuff, it is possible that the cat
command will time out due to a firewall that quietly drops connections.
#!/bin/bash if [ -z "" ] || [ -z "" ] ; then exit 1 ; fi t="${3:-3}" p="${4:-tcp}" s="$(cat 2>/dev/null < /dev/null > /dev/${p}// & WPID=$!; sleep ${t} && kill $! >/dev/null 2>&1 & KPID=$!; wait $WPID && echo 1)" s="${s:-0}" echo -ne "\t\t" echo "${s}" | sed 's/0/2/;s/1/0/;s/2/1/'