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