Обсуждение: Does PG have a database

Поиск
Список
Период
Сортировка

Does PG have a database

От
Mark Fenbers
Дата:
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


Re: Does PG have a database

От
Markus Schaber
Дата:
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


Re: Does PG have a database

От
Manlio Perillo
Дата:
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


Re: Does PG have a database

От
Achilleus Mantzios
Дата:
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