Postgres – 在bash中testing数据库连接

我想知道是否有一个替代psql命令来testing使用bash连接到postgresql数据库。

我正在设置一个核心操作系统群集,并有一个服务,它应该每分钟执行相当于psql 'host=xxx port=xxx dbname=xxx user=xxx'的服务,以确定服务是否正在运行,更重要的是,如果可以使用给定的参数连接到它)。

我无法直接在Core OS上安装postgres。 Core OS中通常使用的命令类似curl -f ${COREOS_PUBLIC_IPV4}:%i; 。 但它只会告诉服务本身是否在给定的端口上运行,没有任何访问检查。

先谢谢你!

pg_isready是一个用于检查PostgreSQL数据库服务器连接状态的工具。 退出状态指定连接检查的结果。

它可以很容易地在bash中使用。

https://www.postgresql.org/docs/9.3/static/app-pg-isready.html

你可以用你select的语言编写一个简单的连接脚本。

希望你的核心操作系统有一个Perl,PHP,Python,ruby等安装

这里是一个在Python中:

 #!/usr/bin/python2.4 # import psycopg2 try: db = psycopg2.connect("dbname='...' user='...' host='...' password='...'") except: exit(1) exit(0) 

现在你的cmdline看起来像这样

 python psqltest.py && echo 'OK' || echo 'FAIL' 

您可以构build一个扩展第一个(保存磁盘)的简单容器来执行检查。 例如:

 FROM postgres ENTRYPOINT [ "psql", "-h", "$POSTGRES_PORT_5432_TCP_ADDR", "-p", "$POSTGRES_PORT_5432_TCP_PORT" ] 

如果你使用的是不同于postgres图片,当然要使用那个。 您可以使用几乎所有您喜欢的命令行,并仍然在CoreOS主机上检查bash中的退出代码:

 #!/bin/sh if ! docker run --link postgres:postgres psql --command "select * from foo;" ; then # Do something fi