Command-line tool and Go library to wait for various conditions to become true. Inspired by Ansible's wait_for
module. It currently supports port checks. More checks will be added in the future, e.g. checks for files, processes.
Make sure Go is installed and setup correctly. To pull the library into the $GOPATH
directory, build the binary, and put it into the $GOBIN
directory, simply run:
go get github.com/st3v/waitfor/...
Assuming your $PATH
contains $GOBIN
, you can now run waitfor
from anywhere on your machine.
waitfor --help
$ waitfor port --help
NAME:
waitfor port - wait for host to listen on port
USAGE:
waitfor port [command options] [arguments...]
OPTIONS:
--closed, -c wait for port to be closed
--host, -h "127.0.0.1" resolvable hostname or IP address
--network, -n "tcp" named network, ['tcp', 'tcp4', 'tcp6', 'udp', 'udp4', 'udp6', 'ip', 'ip4', 'ip6']
--timeout, -t "5m0s" maximum time to wait for
--interval, -i "1s" time in-between checks
--verbose, -v enable additional logging
For example, wait up to 1 minute for localhost
to listen on port 8080
using the tcp
protocol. Check port every 500 milliseconds.
waitfor port 8080 -h localhost -n tcp -t 1m -i 500ms
Use the --closed
flag to wait for a port to be closed.
waitfor port 8080 -h localhost -n tcp -c