[check_postgres] [commit] Do not force a connection arg: do our best to connect, and use

check_postgres at bucardo.org check_postgres at bucardo.org
Wed Feb 4 17:35:27 UTC 2009


Committed by Greg Sabino Mullane <greg at endpoint.com>

Do not force a connection arg: do our best to connect, and use
PGHOST, PGPORT, PGUSER, and PGDATABASE as defaults.

---
 check_postgres.pl |   40 +++++++++++++++++++++++-----------------
 1 files changed, 23 insertions(+), 17 deletions(-)

diff --git a/check_postgres.pl b/check_postgres.pl
index a55f145..3457b73 100755
--- a/check_postgres.pl
+++ b/check_postgres.pl
@@ -28,7 +28,7 @@ $Data::Dumper::Varname = 'POSTGRES';
 $Data::Dumper::Indent = 2;
 $Data::Dumper::Useqq = 1;
 
-our $VERSION = '2.6.1';
+our $VERSION = '2.7.0';
 
 use vars qw/ %opt $PSQL $res $COM $SQL $db /;
 
@@ -922,11 +922,11 @@ sub run_command {
 	## Default connection options
 	my $conn =
 		{
-		 host   =>    ['<none>'],
-		 port   =>    [$opt{defaultport}],
-		 dbname =>    [$opt{defaultdb}],
-		 dbuser =>    [$opt{defaultuser}],
-		 dbpass =>    [''],
+		 host   =>    [$ENV{PGHOST}     || '<none>'],
+		 port   =>    [$ENV{PGPORT}     || $opt{defaultport}],
+		 dbname =>    [$ENV{PGDATABASE} || $opt{defaultdb}],
+		 dbuser =>    [$ENV{PGUSER}     || $opt{defaultuser}],
+		 dbpass =>    [$ENV{PGPASSWORD} || ''],
 		 dbservice => [''],
 		 };
 
@@ -970,16 +970,12 @@ sub run_command {
 			$group{$vname} = $conn->{$vname};
 		}
 
-		if (!$foundgroup) { ## Nothing new, so we bail
-			last GROUP;
-		}
 		$gbin++;
 
 		## Now break the newly created group into individual targets
 		my $tbin = 0;
 	  TARGET: {
 			my $foundtarget = 0;
-			## We know th
 			my %temptarget;
 			for my $g (keys %group) {
 				if (defined $group{$g}->[$tbin]) {
@@ -999,6 +995,7 @@ sub run_command {
 			redo;
 		} ## end TARGET
 
+		last GROUP if ! $foundgroup;
 		redo;
 	} ## end GROUP
 
@@ -3834,7 +3831,8 @@ sub show_dbstats {
 =head1 NAME
 
 B<check_postgres.pl> - a Postgres monitoring script for Nagios, MRTG, Cacti, and others
-This document describes check_postgres.pl version 2.6.1
+
+This documents describes check_postgres.pl version 2.7.0
 
 =head1 SYNOPSIS
 
@@ -3935,30 +3933,33 @@ other actions, using --simple is enough to make Cacti happy.
 
 =head1 DATABASE CONNECTION OPTIONS
 
-All actions accept a common set of database options. At least one is required.
+All actions accept a common set of database options.
 
 =over 4
 
 =item B<-H NAME> or B<--host=NAME>
 
 Connect to the host indicated by NAME. Can be a comma-separated list of names. Multiple host arguments 
-are allowed. If no host is given, defaults to a local Unix socket. You may also use "--dbhost".
+are allowed. If no host is given, defaults to the C<PGHOST> environment variable or no host at all 
+(which indicates using a local Unix socket). You may also use "--dbhost".
 
 =item B<-p PORT> or B<--port=PORT>
 
 Connects using the specified PORT number. Can be a comma-separated list of port numbers, and multiple 
-port arguments are allowed. If no port number is given, the default is 5432. You may also use "--dbport"
+port arguments are allowed. If no port number is given, defaults to the C<PGPORT> environment variable. If 
+that is not set, it defaults to 5432. You may also use "--dbport"
 
 =item B<-db NAME> or B<--dbname=NAME>
 
 Specifies which database to connect to. Can be a comma-separated list of names, and multiple dbname 
-arguments are allowed. If no dbname option is provided, defaults to 'postgres' if psql 
-is version 8 or greater, and 'template1' otherwise.
+arguments are allowed. If no dbname option is provided, defaults to the C<PGDATABASE> environment variable. 
+If that is not set, it defaults to 'postgres' if psql is version 8 or greater, and 'template1' otherwise.
 
 =item B<-u USERNAME> or B<--dbuser=USERNAME>
 
 The name of the database user to connect as. Can be a comma-separated list of usernames, and multiple 
-dbuser arguments are allowed. If this is not provided, the default is 'postgres'.
+dbuser arguments are allowed. If this is not provided, it defaults to the C<PGUSER> environment variable, otherwise 
+it defaults to 'postgres'.
 
 =item B<--dbpass=PASSWORD>
 
@@ -5085,6 +5086,11 @@ Items not specifically attributed are by Greg Sabino Mullane.
 
 =over 4
 
+=item B<Version 2.7.0> (?? 2009)
+
+  Do not require a connection argument, but use defaults and ENV variables when 
+    possible: PGHOST, PGPORT, PGUSER, PGDATABASE.
+
 =item B<Version 2.6.1> (February 4, 2009)
 
   Only require Date::Parse to be loaded if using the checkpoint action.
-- 
1.6.0.5



More information about the Check_postgres mailing list