vishnubob/wait-for-it

纯bash脚本,用于测试和等待TCP主机和端口的可用性

安装数: 83,757

依赖项: 4

建议者: 0

安全性: 0

星标: 9,310

关注者: 91

分支: 2,275

公开问题: 72

语言:Python

dev-master 2020-08-22 23:18 UTC

This package is not auto-updated.

Last update: 2024-09-13 19:57:31 UTC


README

wait-for-it.sh 是一个纯bash脚本,用于等待主机和TCP端口的可用性。它对于同步启动相互依赖的服务非常有用,例如链接的docker容器。由于它是一个纯bash脚本,因此没有外部依赖。

用法

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

示例

例如,让我们测试是否可以访问 www.google.com 的80端口,如果可用,则输出信息 google is up

$ ./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

您可以使用 -t--timeout= 选项设置自己的超时时间。将超时时间设置为0将禁用超时

$ ./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

无论服务是否启动,都将执行子命令。如果您只想在服务启动时执行子命令,请添加 --strict 参数。在这个例子中,我们将测试 www.google.com 的81端口,这将失败

$ ./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

如果您不想执行子命令,请省略 -- 参数。这样,您可以在自己的脚本中测试 wait-for-it.sh 的退出条件,并确定如何进行下一步

$ ./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

社区

Debian: 有一个 Debian 软件包