Ich frage mich, ob es eine Alternative zum Befehl psql gibt, um die Verbindung zu einer postgresql-Datenbank mit bash zu testen.
Ich stelle ein Core OS-Cluster ein und besitze einen Nebendienst, der jede Minute das Äquivalent von psql 'Host=xxx port=xxx dbname=xxx user=xxx'
ausführen sollte, um festzustellen, ob der Dienst ausgeführt wird, und was noch wichtiger ist, ob er mit den angegebenen Parametern eine Verbindung zu ihm herstellen kann.
Ich kann Postgres nicht direkt auf dem Core OS installieren. Der Befehl, der normalerweise in Core OS verwendet wird, ist etwa curl -f ${COREOS_PUBLIC_IPV4}:%i;
. Es sagt jedoch nur, ob der Dienst selbst auf dem angegebenen Port ohne Zugriffsprüfung ausgeführt wird.
Danke im Voraus!
pg_isready ist ein Dienstprogramm zum Überprüfen des Verbindungsstatus eines PostgreSQL-Datenbankservers. Der Beendigungsstatus gibt das Ergebnis der Verbindungsprüfung an.
Es kann leicht in Bash verwendet werden.
https://www.postgresql.org/docs/9.3/static/app-pg-isready.html
sie können ein einfaches Verbindungsskript in Ihrer bevorzugten Sprache schreiben.
hoffentlich ist auf Ihrem Core OS-System eines von Perl, PHP, Python, Ruby usw. installiert
hier ist einer in python:
#!/usr/bin/python2.4
#
import psycopg2
try:
db = psycopg2.connect("dbname='...' user='...' Host='...' password='...'")
except:
exit(1)
exit(0)
nun sieht deine cmdline so aus
python psqltest.py && echo 'OK' || echo 'FAIL'
Sie können einen einfachen Container erstellen, der den ersten erweitert (um die Festplatte zu konservieren), um die Überprüfung durchzuführen. Zum Beispiel:
FROM postgres
ENTRYPOINT [ "psql", "-h", "$POSTGRES_PORT_5432_TCP_ADDR", "-p", "$POSTGRES_PORT_5432_TCP_PORT" ]
Wenn Sie ein anderes Bild als postgres
verwenden, verwenden Sie dieses natürlich. Sie können so ziemlich jede Befehlszeile verwenden, die Sie mögen, und trotzdem die Exit-Codes von bash auf dem CoreOS-Host prüfen:
#!/bin/sh
if ! docker run --link postgres:postgres psql --command "select * from foo;" ; then
# Do something
fi
Verwenden Sie \c conninfo
, um die Verbindungsinformationen in der PSQL-Shell (psql) anzuzeigen.