Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vishnubob/wait-for-it
Pure bash script to test and wait on the availability of a TCP host and port
https://github.com/vishnubob/wait-for-it
Last synced: 4 days ago
JSON representation
Pure bash script to test and wait on the availability of a TCP host and port
- Host: GitHub
- URL: https://github.com/vishnubob/wait-for-it
- Owner: vishnubob
- License: mit
- Created: 2016-02-02T17:06:22.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2024-06-10T23:39:24.000Z (6 months ago)
- Last Synced: 2024-12-02T11:06:48.491Z (11 days ago)
- Language: Python
- Homepage:
- Size: 28.3 KB
- Stars: 9,424
- Watchers: 90
- Forks: 2,273
- Open Issues: 73
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-starts - vishnubob/wait-for-it - Pure bash script to test and wait on the availability of a TCP host and port (others)
- awesome-list - wait-for-it
- awesome-discoveries - wait-for-it - pure bash script to test and wait on the availability of a TCP host and port _(`Shell`)_ (Containers)
- awesome-hacking-lists - vishnubob/wait-for-it - Pure bash script to test and wait on the availability of a TCP host and port (Python)
- StarryDivineSky - vishnubob/wait-for-it
README
# wait-for-it
`wait-for-it.sh` is a pure bash script that will wait on the availability of a
host and TCP port. It is useful for synchronizing the spin-up of
interdependent services, such as linked docker containers. Since it is a pure
bash script, it does not have any external dependencies.## Usage
```text
wait-for-it.sh host:port [-s] [-t timeout] [-- command args]
-h HOST | --host=HOST Host or IP under test
-p PORT | --port=PORT TCP port under test
Alternatively, you specify the host and port as host:port
-s | --strict Only execute subcommand if the test succeeds
-q | --quiet Don't output any status messages
-t TIMEOUT | --timeout=TIMEOUT
Timeout in seconds, zero for no timeout
-- COMMAND ARGS Execute command with args after the test finishes
```## Examples
For example, let's test to see if we can access port 80 on `www.google.com`,
and if it is available, echo the message `google is up`.```text
$ ./wait-for-it.sh www.google.com:80 -- echo "google is up"
wait-for-it.sh: waiting 15 seconds for www.google.com:80
wait-for-it.sh: www.google.com:80 is available after 0 seconds
google is up
```You can set your own timeout with the `-t` or `--timeout=` option. Setting
the timeout value to 0 will disable the timeout:```text
$ ./wait-for-it.sh -t 0 www.google.com:80 -- echo "google is up"
wait-for-it.sh: waiting for www.google.com:80 without a timeout
wait-for-it.sh: www.google.com:80 is available after 0 seconds
google is up
```The subcommand will be executed regardless if the service is up or not. If you
wish to execute the subcommand only if the service is up, add the `--strict`
argument. In this example, we will test port 81 on `www.google.com` which will
fail:```text
$ ./wait-for-it.sh www.google.com:81 --timeout=1 --strict -- echo "google is up"
wait-for-it.sh: waiting 1 seconds for www.google.com:81
wait-for-it.sh: timeout occurred after waiting 1 seconds for www.google.com:81
wait-for-it.sh: strict mode, refusing to execute subprocess
```If you don't want to execute a subcommand, leave off the `--` argument. This
way, you can test the exit condition of `wait-for-it.sh` in your own scripts,
and determine how to proceed:```text
$ ./wait-for-it.sh www.google.com:80
wait-for-it.sh: waiting 15 seconds for www.google.com:80
wait-for-it.sh: www.google.com:80 is available after 0 seconds
$ echo $?
0
$ ./wait-for-it.sh www.google.com:81
wait-for-it.sh: waiting 15 seconds for www.google.com:81
wait-for-it.sh: timeout occurred after waiting 15 seconds for www.google.com:81
$ echo $?
124
```## Community
*Debian*: There is a [Debian package](https://tracker.debian.org/pkg/wait-for-it).