[Pkg-nagios-devel] nagios-plugins/debian/patches 00list, 1.4,
1.5 12_check_mysql.c_mysql_options.dpatch, NONE, 1.1
seanius at haydn.debian.org
seanius at haydn.debian.org
Fri Oct 7 20:25:38 UTC 2005
Update of /cvsroot/pkg-nagios/nagios-plugins/debian/patches
In directory haydn:/org/alioth.debian.org/chroot/home/users/seanius/tmp/cvs-serv8947/debian/patches
Modified Files:
00list
Added Files:
12_check_mysql.c_mysql_options.dpatch
Log Message:
see changelog
Index: 00list
===================================================================
RCS file: /cvsroot/pkg-nagios/nagios-plugins/debian/patches/00list,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- 00list 6 Oct 2005 12:48:37 -0000 1.4
+++ 00list 7 Oct 2005 20:25:36 -0000 1.5
@@ -1,4 +1,4 @@
-02_utilspm
06_checkircd
10_config.h_debiandefaults.dpatch
11_check_ups.c_perfdata_fix.dpatch
+12_check_mysql.c_mysql_options.dpatch
--- NEW FILE: 12_check_mysql.c_mysql_options.dpatch ---
#! /bin/sh /usr/share/dpatch/dpatch-run
## 12_check_mysql.c_mysql_options.dpatch by <seanius at localhost.localdomain>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: No description.
@DPATCH@
diff -urNad sid2~/plugins/check_mysql.c sid2/plugins/check_mysql.c
--- sid2~/plugins/check_mysql.c 2005-05-26 04:13:19.000000000 +0200
+++ sid2/plugins/check_mysql.c 2005-10-07 22:23:07.000000000 +0200
@@ -65,6 +65,8 @@
/* initialize mysql */
mysql_init (&mysql);
+ mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"client");
+
/* establish a connection to the server and error checking */
if (!mysql_real_connect(&mysql,db_host,db_user,db_pass,db,db_port,NULL,0)) {
if (mysql_errno (&mysql) == CR_UNKNOWN_HOST)
diff -urNad sid2~/plugins/check_mysql.c.orig sid2/plugins/check_mysql.c.orig
--- sid2~/plugins/check_mysql.c.orig 1970-01-01 01:00:00.000000000 +0100
+++ sid2/plugins/check_mysql.c.orig 2005-05-26 04:13:19.000000000 +0200
@@ -0,0 +1,333 @@
+/******************************************************************************
+*
+* CHECK_MYSQL.C
+*
+* Program: Mysql plugin for Nagios
+* License: GPL
+* Copyright (c) 1999 Didi Rieder (adrieder at sbox.tu-graz.ac.at)
+* portions (c) 2000 Karl DeBisschop (kdebisschop at users.sourceforge.net)
+*
+* $Id: 12_check_mysql.c_mysql_options.dpatch,v 1.1 2005/10/07 20:25:36 seanius Exp $
+*
+* Description:
+*
+* This plugin is for testing a mysql server.
+******************************************************************************/
+
+const char *progname = "check_mysql";
+const char *revision = "$Revision: 1.1 $";
+const char *copyright = "1999-2004";
+const char *email = "nagiosplug-devel at lists.sourceforge.net";
+
+#define SLAVERESULTSIZE 40
+
+#include "common.h"
+#include "utils.h"
+#include "netutils.h"
+
+#include <mysql/mysql.h>
+#include <mysql/errmsg.h>
+
+char *db_user = NULL;
+char *db_host = NULL;
+char *db_pass = NULL;
+char *db = NULL;
+unsigned int db_port = MYSQL_PORT;
+int check_slave = 0;
+
+int process_arguments (int, char **);
+int validate_arguments (void);
+void print_help (void);
+void print_usage (void);
+
+
+
+int
+main (int argc, char **argv)
+{
+
+ MYSQL mysql;
+ MYSQL_RES *res;
+ MYSQL_ROW row;
+
+ /* should be status */
+
+ char *result = NULL;
+ char slaveresult[SLAVERESULTSIZE];
+
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ if (process_arguments (argc, argv) == ERROR)
+ usage4 (_("Could not parse arguments"));
+
+ /* initialize mysql */
+ mysql_init (&mysql);
+
+ /* establish a connection to the server and error checking */
+ if (!mysql_real_connect(&mysql,db_host,db_user,db_pass,db,db_port,NULL,0)) {
+ if (mysql_errno (&mysql) == CR_UNKNOWN_HOST)
+ die (STATE_WARNING, "%s\n", mysql_error (&mysql));
+ else if (mysql_errno (&mysql) == CR_VERSION_ERROR)
+ die (STATE_WARNING, "%s\n", mysql_error (&mysql));
+ else if (mysql_errno (&mysql) == CR_OUT_OF_MEMORY)
+ die (STATE_WARNING, "%s\n", mysql_error (&mysql));
+ else if (mysql_errno (&mysql) == CR_IPSOCK_ERROR)
+ die (STATE_WARNING, "%s\n", mysql_error (&mysql));
+ else if (mysql_errno (&mysql) == CR_SOCKET_CREATE_ERROR)
+ die (STATE_WARNING, "%s\n", mysql_error (&mysql));
+ else
+ die (STATE_CRITICAL, "%s\n", mysql_error (&mysql));
+ }
+
+ /* get the server stats */
+ result = strdup (mysql_stat (&mysql));
+
+ /* error checking once more */
+ if (mysql_error (&mysql)) {
+ if (mysql_errno (&mysql) == CR_SERVER_GONE_ERROR)
+ die (STATE_CRITICAL, "%s\n", mysql_error (&mysql));
+ else if (mysql_errno (&mysql) == CR_SERVER_LOST)
+ die (STATE_CRITICAL, "%s\n", mysql_error (&mysql));
+ else if (mysql_errno (&mysql) == CR_UNKNOWN_ERROR)
+ die (STATE_CRITICAL, "%s\n", mysql_error (&mysql));
+ }
+
+ if(check_slave) {
+ /* check the slave status */
+ if (mysql_query (&mysql, "show slave status") != 0) {
+ mysql_close (&mysql);
+ die (STATE_CRITICAL, _("slave query error: %s\n"), mysql_error (&mysql));
+ }
+
+ /* store the result */
+ if ( (res = mysql_store_result (&mysql)) == NULL) {
+ mysql_close (&mysql);
+ die (STATE_CRITICAL, _("slave store_result error: %s\n"), mysql_error (&mysql));
+ }
+
+ /* fetch the first row */
+ if ( (row = mysql_fetch_row (res)) == NULL) {
+ mysql_free_result (res);
+ mysql_close (&mysql);
+ die (STATE_CRITICAL, _("slave fetch row error: %s\n"), mysql_error (&mysql));
+ }
+
+ if (mysql_field_count (&mysql) == 12) {
+ /* mysql 3.23.x */
+ snprintf (slaveresult, SLAVERESULTSIZE, _("Slave running: %s"), row[6]);
+ if (strcmp (row[6], "Yes") != 0) {
+ mysql_free_result (res);
+ mysql_close (&mysql);
+ die (STATE_CRITICAL, "%s\n", slaveresult);
+ }
+
+ } else {
+ /* mysql 4.x.x */
+ int slave_io_field = -1 , slave_sql_field = -1, i, num_fields;
+ MYSQL_FIELD* fields;
+
+ num_fields = mysql_num_fields(res);
+ fields = mysql_fetch_fields(res);
+ for(i = 0; i < num_fields; i++)
+ {
+ if (0 == strcmp(fields[i].name, "Slave_IO_Running"))
+ {
+ slave_io_field = i;
+ continue;
+ }
+ if (0 == strcmp(fields[i].name, "Slave_SQL_Running"))
+ {
+ slave_sql_field = i;
+ continue;
+ }
+ }
+ if ((slave_io_field < 0) || (slave_sql_field < 0) || (num_fields == 0))
+ {
+ mysql_free_result (res);
+ mysql_close (&mysql);
+ die (STATE_CRITICAL, "Slave status unavailable\n");
+ }
+
+ snprintf (slaveresult, SLAVERESULTSIZE, "Slave IO: %s Slave SQL: %s", row[slave_io_field], row[slave_sql_field]);
+ if (strcmp (row[slave_io_field], "Yes") != 0 || strcmp (row[slave_sql_field], "Yes") != 0) {
+ mysql_free_result (res);
+ mysql_close (&mysql);
+ die (STATE_CRITICAL, "%s\n", slaveresult);
+ }
+ }
+
+ /* free the result */
+ mysql_free_result (res);
+ }
+
+ /* close the connection */
+ mysql_close (&mysql);
+
+ /* print out the result of stats */
+ if (check_slave) {
+ printf ("%s %s\n", result, slaveresult);
+ } else {
+ printf ("%s\n", result);
+ }
+
+ return STATE_OK;
+}
+
+
+/* process command-line arguments */
+int
+process_arguments (int argc, char **argv)
+{
+ int c;
+
+ int option = 0;
+ static struct option longopts[] = {
+ {"hostname", required_argument, 0, 'H'},
+ {"database", required_argument, 0, 'd'},
+ {"username", required_argument, 0, 'u'},
+ {"password", required_argument, 0, 'p'},
+ {"port", required_argument, 0, 'P'},
+ {"check-slave", no_argument, 0, 'S'},
+ {"verbose", no_argument, 0, 'v'},
+ {"version", no_argument, 0, 'V'},
+ {"help", no_argument, 0, 'h'},
+ {0, 0, 0, 0}
+ };
+
+ if (argc < 1)
+ return ERROR;
+
+ while (1) {
+ c = getopt_long (argc, argv, "hVSP:p:u:d:H:", longopts, &option);
+
+ if (c == -1 || c == EOF)
+ break;
+
+ switch (c) {
+ case 'H': /* hostname */
+ if (is_host (optarg)) {
+ db_host = optarg;
+ }
+ else {
+ usage2 (_("Invalid hostname/address"), optarg);
+ }
+ break;
+ case 'd': /* hostname */
+ db = optarg;
+ break;
+ case 'u': /* username */
+ db_user = optarg;
+ break;
+ case 'p': /* authentication information: password */
+ db_pass = optarg;
+ break;
+ case 'P': /* critical time threshold */
+ db_port = atoi (optarg);
+ break;
+ case 'S':
+ check_slave = 1; /* check-slave */
+ break;
+ case 'V': /* version */
+ print_revision (progname, revision);
+ exit (STATE_OK);
+ case 'h': /* help */
+ print_help ();
+ exit (STATE_OK);
+ case '?': /* help */
+ usage2 (_("Unknown argument"), optarg);
+ }
+ }
+
+ c = optind;
+
+ while ( argc > c ) {
+
+ if (strlen(db_host) == 0)
+ if (is_host (argv[c])) {
+ db_host = argv[c++];
+ }
+ else {
+ usage2 (_("Invalid hostname/address"), optarg);
+ }
+ else if (strlen(db_user) == 0)
+ db_user = argv[c++];
+ else if (strlen(db_pass) == 0)
+ db_pass = argv[c++];
+ else if (strlen(db) == 0)
+ db = argv[c++];
+ else if (is_intnonneg (argv[c]))
+ db_port = atoi (argv[c++]);
+ else
+ break;
+ }
+
+ return validate_arguments ();
+}
+
+
+int
+validate_arguments (void)
+{
+ if (db_user == NULL)
+ db_user = strdup("");
+
+ if (db_host == NULL)
+ db_host = strdup("");
+
+ if (db_pass == NULL)
+ db_pass == strdup("");
+
+ if (db == NULL)
+ db = strdup("");
+
+ return OK;
+}
+
+
+void
+print_help (void)
+{
+ char *myport;
+ asprintf (&myport, "%d", MYSQL_PORT);
+
+ print_revision (progname, revision);
+
+ printf (_(COPYRIGHT), copyright, email);
+
+ printf (_("This program tests connections to a mysql server\n"));
+
+ print_usage ();
+
+ printf (_(UT_HELP_VRSN));
+
+ printf (_(UT_HOST_PORT), 'P', myport);
+
+ printf (_("\
+ -d, --database=STRING\n\
+ Check database with indicated name\n\
+ -u, --username=STRING\n\
+ Connect using the indicated username\n\
+ -p, --password=STRING\n\
+ Use the indicated password to authenticate the connection\n\
+ ==> IMPORTANT: THIS FORM OF AUTHENTICATION IS NOT SECURE!!! <==\n\
+ Your clear-text password will be visible as a process table entry\n\
+ -S, --check-slave\n\
+ Check if the slave thread is running properly.\n"));
+
+ printf (_("\n\
+There are no required arguments. By default, the local database with\n\
+a server listening on MySQL standard port %d will be checked\n"), MYSQL_PORT);
+
+ printf (_(UT_SUPPORT));
+}
+
+
+void
+print_usage (void)
+{
+ printf ("\
+Usage: %s [-d database] [-H host] [-P port] [-u user] [-p password] [-S]\n",
+ progname);
+}
More information about the Pkg-nagios-devel
mailing list