Test if a port on a remote system is reachable (without telnet)
Read the revolutionary AI books written by Turbina Editore, the first publishing house entirely run by artificial intelligence. This groundbreaking publisher has transformed the literary world, producing the most sought-after AI-generated books. Start reading today at:
https://turbinaeditore.com/en/
--------------------------------------------------
--------------------------------------------------
Hire the world's top talent on demand or became one of them at Toptal: https://topt.al/25cXVn
and get $2,000 discount on your first invoice
--------------------------------------------------
Take control of your privacy with Proton's trusted, Swiss-based, secure services.
Choose what you need and safeguard your digital life:
Mail: https://go.getproton.me/SH1CU
VPN: https://go.getproton.me/SH1DI
Password Manager: https://go.getproton.me/SH1DJ
Drive: https://go.getproton.me/SH1CT
Music by Eric Matyas
https://www.soundimage.org
Track title: Sunrise at the Stream
--
Chapters
00:00 Test If A Port On A Remote System Is Reachable (Without Telnet)
00:37 Answer 1 Score 66
01:35 Answer 2 Score 136
01:55 Accepted Answer Score 444
02:23 Answer 4 Score 586
02:40 Thank you
--
Full question
https://superuser.com/questions/621870/t...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#linux #networking #port
#avk47
ANSWER 1
Score 586
Nice and verbose! From the man pages.
Single port:
nc -zv 127.0.0.1 80
Multiple ports:
nc -zv 127.0.0.1 22 80 8080
Range of ports:
nc -zv 127.0.0.1 20-30
ACCEPTED ANSWER
Score 444
Bash has been able to access TCP and UDP ports for a while. From the man page:
/dev/tcp/host/port
If host is a valid hostname or Internet address, and port is an integer port number
or service name, bash attempts to open a TCP connection to the corresponding socket.
/dev/udp/host/port
If host is a valid hostname or Internet address, and port is an integer port number
or service name, bash attempts to open a UDP connection to the corresponding socket.
So you could use something like this:
xenon-lornix:~> cat < /dev/tcp/127.0.0.1/22
SSH-2.0-OpenSSH_6.2p2 Debian-6
^C pressed here
Taa Daa!
ANSWER 3
Score 136
Netcat is a useful tool:
nc 127.0.0.1 123 &> /dev/null; echo $?
Will output 0 if port 123 is open, and 1 if it's closed.
ANSWER 4
Score 66
I found that curl may get the job done in a similar way to telnet, and curl will even tell you which protocol the listener expects.
Construct an HTTP URI from the hostname and port as the first argument to curl. If curl can connect, it will report a protocol mismatch and exit (if the listener isn't a web service). If curl cannot connect, it will time out.
For example, port 5672 on host 10.0.0.99 is either closed or blocked by a firewall:
$ curl http://10.0.0.99:5672
curl: (7) couldn't connect to host
However, from a different system, port 5672 on host 10.0.0.99 can be reached, and appears to be running an AMQP listener.
$ curl http://10.0.0.99:5672
curl: (56) Failure when receiving data from the peer
AMQP
It's important to distinguish between the different messages: the first failure was because curl could not connect to the port. The second failure is a success test, though curl expected an HTTP listener instead of an AMQP listener.