Testing a TCP connection using bash

2 min read | by Jordi Prats

To be able to debug issues we can test a TCP connection using netcat (nc) or even telnet. But when we are on a containerized environment such as Kubernetes it can be a challenge when the container doesn't have the right tools for the job

$ nc bash: nc: command not found $ netcat bash: netcat: command not found $ telnet bash: telnet: command not found 

But we can also test a TCP connection using just bash. To do so we can use /dev/tcp/HOST/PORT as follows:

timeout 1 bash -c 'cat < /dev/null > /dev/tcp/127.0.0.1/80'; echo $? 

So, if it can connect successfully it will just return 0:

$ timeout 1 bash -c 'cat < /dev/null > /dev/tcp/google.com/80'; echo $? 0 

Otherwise we'll get an error message:

$ timeout 1 bash -c 'cat < /dev/null > /dev/tcp/127.0.0.1/80'; echo $? bash: connect: Connection refused bash: /dev/tcp/127.0.0.1/80: Connection refused 

Posted on 05/07/2021

Categories