X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fcheck_pgsql.c;h=abe721bf696a5802d60e4922c7e7fd6896733f4c;hb=d40abb2504b99e1318840ad1a5d9f4a340c465b5;hp=826a105706f1a8d252502cb44acef098a201f099;hpb=83df67099daebd7189ad0417089040f3b2de27c1;p=nagiosplug.git diff --git a/plugins/check_pgsql.c b/plugins/check_pgsql.c index 826a105..abe721b 100644 --- a/plugins/check_pgsql.c +++ b/plugins/check_pgsql.c @@ -1,26 +1,35 @@ -/****************************************************************************** - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - $Id$ - - *****************************************************************************/ +/***************************************************************************** +* +* Nagios check_pgsql plugin +* +* License: GPL +* Copyright (c) 1999-2007 Nagios Plugins Development Team +* +* Description: +* +* This file contains the check_pgsql plugin +* +* Test whether a PostgreSQL Database is accepting connections. +* +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +* +* +*****************************************************************************/ const char *progname = "check_pgsql"; -const char *revision = "$Revision$"; -const char *copyright = "1999-2004"; +const char *copyright = "1999-2007"; const char *email = "nagiosplug-devel@lists.sourceforge.net"; #include "common.h" @@ -28,6 +37,7 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net"; #include "netutils.h" #include +#include #define DEFAULT_DB "template1" #define DEFAULT_HOST "127.0.0.1" @@ -136,7 +146,10 @@ main (int argc, char **argv) bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); - if (process_arguments (argc, argv) != TRUE) + /* Parse extra opts if any */ + argv=np_extra_opts (&argc, argv, progname); + + if (process_arguments (argc, argv) == ERROR) usage4 (_("Could not parse arguments")); /* Set signal handling and alarm */ @@ -169,7 +182,7 @@ main (int argc, char **argv) status = STATE_OK; } PQfinish (conn); - printf (_(" %s - database %s (%d sec.)|%s\n"), + printf (_(" %s - database %s (%d sec.)|%s\n"), state_text(status), dbName, elapsed_time, fperfdata("time", elapsed_time, "s", (int)twarn, twarn, (int)tcrit, tcrit, TRUE, 0, FALSE,0)); @@ -209,14 +222,12 @@ process_arguments (int argc, char **argv) switch (c) { case '?': /* usage */ - printf (_("%s: Unknown argument: %s\n\n"), progname, optarg); - print_usage (); - exit (STATE_UNKNOWN); + usage5 (); case 'h': /* help */ print_help (); exit (STATE_OK); case 'V': /* version */ - print_revision (progname, revision); + print_revision (progname, NP_VERSION); exit (STATE_OK); case 't': /* timeout period */ if (!is_integer (optarg)) @@ -232,7 +243,7 @@ process_arguments (int argc, char **argv) break; case 'w': /* warning time threshold */ if (!is_nonnegative (optarg)) - usage2 (_("Critical threshold must be a positive integer"), optarg); + usage2 (_("Warning threshold must be a positive integer"), optarg); else twarn = strtod (optarg, NULL); break; @@ -331,16 +342,16 @@ is_pg_dbname (char *dbname) return (FALSE); strncpy (txt, dbname, NAMEDATALEN - 1); txt[NAMEDATALEN - 1] = 0; - if (sscanf (txt, "%[_a-zA-Z]%[^_a-zA-Z0-9]", tmp, tmp) == 1) + if (sscanf (txt, "%[_a-zA-Z]%[^_a-zA-Z0-9-]", tmp, tmp) == 1) return (TRUE); - if (sscanf (txt, "%[_a-zA-Z]%[_a-zA-Z0-9]%[^_a-zA-Z0-9]", tmp, tmp, tmp) == + if (sscanf (txt, "%[_a-zA-Z]%[_a-zA-Z0-9-]%[^_a-zA-Z0-9-]", tmp, tmp, tmp) == 2) return (TRUE); return (FALSE); } /** -the tango program should eventually create an entity here based on the +the tango program should eventually create an entity here based on the function prototype @@- @@ -374,7 +385,7 @@ is_pg_logname (char *username) /****************************************************************************** @@- - + -@@ @@ -389,27 +400,30 @@ print_help (void) asprintf (&myport, "%d", DEFAULT_PORT); - print_revision (progname, revision); + print_revision (progname, NP_VERSION); + + printf (COPYRIGHT, copyright, email); - printf (_(COPYRIGHT), copyright, email); + printf (_("Test whether a PostgreSQL Database is accepting connections.")); - printf (_("Test whether a PostgreSQL Database is accepting connections.\n\n")); + printf ("\n\n"); print_usage (); printf (_(UT_HELP_VRSN)); + printf (_(UT_EXTRA_OPTS)); printf (_(UT_HOST_PORT), 'P', myport); printf (_(UT_IPv46)); - printf (S_("\ - -d, --database=STRING\n\ - Database to check (default: %s)\n\ - -l, --logname = STRING\n\ - Login name of user\n\ - -p, --password = STRING\n\ - Password (BIG SECURITY ISSUE)\n"), DEFAULT_DB); + printf (" %s\n", "-d, --database=STRING"); + printf (" %s", _("Database to check ")); + printf (_("(default: %s)"), DEFAULT_DB); + printf (" %s\n", "-l, --logname = STRING"); + printf (" %s\n", _("Login name of user")); + printf (" %s\n", "-p, --password = STRING"); + printf (" %s\n", _("Password (BIG SECURITY ISSUE)")); printf (_(UT_WARN_CRIT)); @@ -417,21 +431,27 @@ print_help (void) printf (_(UT_VERBOSE)); - printf (S_("\nAll parameters are optional.\n\ -\n\ -This plugin tests a PostgreSQL DBMS to determine whether it is active and\n\ -accepting queries. In its current operation, it simply connects to the\n\ -specified database, and then disconnects. If no database is specified, it\n\ -connects to the template1 database, which is present in every functioning \n\ -PostgreSQL DBMS.\n")); - printf (S_("\n\ -The plugin will connect to a local postmaster if no host is specified. To\n\ -connect to a remote host, be sure that the remote postmaster accepts TCP/IP\n\ -connections (start the postmaster with the -i option).\n")); - printf (S_("\n\ -Typically, the nagios user (unless the --logname option is used) should be\n\ -able to connect to the database without a password. The plugin can also send\n\ -a password, but no effort is made to obsure or encrypt the password.\n")); + printf ("\n"); + printf (" %s\n", _("All parameters are optional.")); + printf (" %s\n", _("This plugin tests a PostgreSQL DBMS to determine whether it is active and")); + printf (" %s\n", _("accepting queries. In its current operation, it simply connects to the")); + printf (" %s\n", _("specified database, and then disconnects. If no database is specified, it")); + printf (" %s\n", _("connects to the template1 database, which is present in every functioning")); + printf (" %s\n\n", _("PostgreSQL DBMS.")); + + printf (" %s\n", _("The plugin will connect to a local postmaster if no host is specified. To")); + printf (" %s\n", _("connect to a remote host, be sure that the remote postmaster accepts TCP/IP")); + printf (" %s\n\n", _("connections (start the postmaster with the -i option).")); + + printf (" %s\n", _("Typically, the nagios user (unless the --logname option is used) should be")); + printf (" %s\n", _("able to connect to the database without a password. The plugin can also send")); + printf (" %s\n", _("a password, but no effort is made to obsure or encrypt the password.")); + +#ifdef NP_EXTRA_OPTS + printf ("\n"); + printf ("%s\n", _("Notes:")); + printf (_(UT_EXTRA_OPTS_NOTES)); +#endif printf (_(UT_SUPPORT)); } @@ -441,12 +461,7 @@ a password, but no effort is made to obsure or encrypt the password.\n")); void print_usage (void) { - printf (S_("\ -Usage:\n %s [-H ] [-P ] [-c ] [-w ]\n\ - [-t ]"), progname); - printf (S_("[-d ] [-l ] [-p ]\n")); - printf (S_("\ - %s (-h | --help) for detailed help\n\ - %s (-V | --version) for version information\n"), - progname, progname); + printf (_("Usage:")); + printf ("%s [-H ] [-P ] [-c ] [-w ]\n", progname); + printf (" [-t ] [-d ] [-l ] [-p ]\n"); }