Обсуждение: Does PG have a database
I have working PostgreSQL databases on 3 of my ~30 Linux boxes. I want my software to be able to determine which of my 30 boxes have functional databases on them. Since Pg is part of the baseline distro, merely checking for the existence of an executable doesn't solve my problem. I tried looping through my list of hosts and running the command: psql -h $host --list but this fails on a box with a database with the same error code as on a box that doesn't have a database, if my PGUSER isn't set and my login ID is not the username of the database. The PGUSER setting might differ for each host, so specifying this in the software is not practical. Bottom line: What trick can I use to determine whether a box has a living, breathing Pg database if I don't know the DB owner? Mark
Hi, Mark, Mark Fenbers schrieb: > Bottom line: What trick can I use to determine whether a box has a > living, breathing Pg database if I don't know the DB owner? If all your Postmasters run on the default port, use nmap on the port, so you see that postmasters are running there. When they run, then there must be a cluster with databases, at least the template ones. If your "baseline distro" is debian, ssh into the machines, and do pg_lsclusters. HTH, Markus
Mark Fenbers ha scritto: > I have working PostgreSQL databases on 3 of my ~30 Linux boxes. I want > my software to be able to determine which of my 30 boxes have functional > databases on them. Since Pg is part of the baseline distro, merely > checking for the existence of an executable doesn't solve my problem. > > I tried looping through my list of hosts and running the command: > psql -h $host --list > but this fails on a box with a database with the same error code as on a > box that doesn't have a database, if my PGUSER isn't set and my login ID > is not the username of the database. The PGUSER setting might differ > for each host, so specifying this in the software is not practical. > > Bottom line: What trick can I use to determine whether a box has a > living, breathing Pg database if I don't know the DB owner? > Mark > Just write a custom client that connects to the given host, on some standard ports. If the connection is accepted, there is a possibility that on the other side there is a PostgreSQL server. To make sure send a StartupMessage http://www.postgresql.org/docs/8.1/static/protocol-message-formats.html You can reuse some code of a library I have written: pglib. http://developer.berlios.de/projects/pglib/ It is released under the MIT license, and it is written in Python and Twisted (a framework for writing asynchronous applications). By the way: pglib aims to be a complete replacement for libpq. Regards Manlio Perillo
O Mark Fenbers έγραψε στις May 22, 2006 : > I have working PostgreSQL databases on 3 of my ~30 Linux boxes. I want > my software to be able to determine which of my 30 boxes have functional > databases on them. Since Pg is part of the baseline distro, merely > checking for the existence of an executable doesn't solve my problem. > > I tried looping through my list of hosts and running the command: > psql -h $host --list > but this fails on a box with a database with the same error code as on a > box that doesn't have a database, if my PGUSER isn't set and my login ID > is not the username of the database. The PGUSER setting might differ > for each host, so specifying this in the software is not practical. > > Bottom line: What trick can I use to determine whether a box has a > living, breathing Pg database if I don't know the DB owner? Use a net mgmt tool (like opennms). netcat, telnet to 5432, etc... > > Mark > > ---------------------------(end of broadcast)--------------------------- > TIP 2: Don't 'kill -9' the postmaster > -- -Achilleus