Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to wait for an open port with netcat?

Tags:

bash

shell

netcat

I'm trying to do a custom dockerfile with jenkins on it. I would to wait until port 8080 is open instead of doing an ugly 'sleep 60' with netcat but I'm not very confident with bash scripts and netcat.

Here is an example of what i'm trying to do:

#!/bin/bash   opened=0   while [ "$opened"  == "0" ]; do   echo "Waiting jenkins to launch on 8080..."   nc -vz localhost 8080 done   echo "Jenkins launched" 
like image 454
FXG Avatar asked Dec 22 '14 09:12

FXG


People also ask

Does netcat open a port?

Netcat is a command-line network tool used to open ports, associate a shell to a port, establish TCP/UDP connections, and more.

How do you specify a port to listen on netcat?

On one machine, you can tell netcat to listen to a specific port for connections. We can do this by providing the -l parameter and choosing a port: netcat -l 4444.

How do I find my netcat port?

Check Open Ports with netcatThe -z option tells nc to scan only for open ports, without sending any data and the -v is for more verbose information. If you want only the lines with the open ports to be printed on the screen, filter the results with the grep command .


1 Answers

You can't set netcat to wait until some port is open, so you have to add part for waiting before next check is made. Try this:

#!/bin/bash  echo "Waiting jenkins to launch on 8080..."  while ! nc -z localhost 8080; do      sleep 0.1 # wait for 1/10 of the second before check again done  echo "Jenkins launched" 
like image 141
user987339 Avatar answered Sep 29 '22 22:09

user987339