From 0b6423f9c99d9edf8c96fefd0f6c453859395aa1 Mon Sep 17 00:00:00 2001 From: Holger Weiss Date: Mon, 30 Sep 2013 00:03:24 +0200 Subject: Import Nagios Plugins site Import the Nagios Plugins web site, Cronjobs, infrastructure scripts, and configuration files. --- ...9444-nagios-plugins-1.4_mysql41-slave-fix.patch | 127 +++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 web/attachments/119444-nagios-plugins-1.4_mysql41-slave-fix.patch (limited to 'web/attachments/119444-nagios-plugins-1.4_mysql41-slave-fix.patch') diff --git a/web/attachments/119444-nagios-plugins-1.4_mysql41-slave-fix.patch b/web/attachments/119444-nagios-plugins-1.4_mysql41-slave-fix.patch new file mode 100644 index 0000000..fb4f11e --- /dev/null +++ b/web/attachments/119444-nagios-plugins-1.4_mysql41-slave-fix.patch @@ -0,0 +1,127 @@ +diff -rNu nagios-plugins-1.4/plugins/check_mysql.c nagios-plugins-1.4_mysql41-slave-fix/plugins/check_mysql.c +--- nagios-plugins-1.4/plugins/check_mysql.c Sun Dec 26 00:17:44 2004 ++++ nagios-plugins-1.4_mysql41-slave-fix/plugins/check_mysql.c Thu Feb 10 13:27:13 2005 +@@ -12,6 +12,11 @@ + * Description: + * + * This plugin is for testing a mysql server. ++* ++****************************************************************************** ++* Modified by wouter@widexs.nl: ++* - Changed static column numbers in the slave-check, to dynamic, ++* so newer MySQL versions (eg. 4.1.x) are supported as well (09-02-2005) + ******************************************************************************/ + + const char *progname = "check_mysql"; +@@ -49,12 +54,19 @@ + MYSQL mysql; + MYSQL_RES *res; + MYSQL_ROW row; ++ MYSQL_FIELD *field; + + /* should be status */ + + char *result = NULL; + char slaveresult[SLAVERESULTSIZE]; + ++ int local_mysql_server_version = 0; ++ int local_mysql_client_version = 0; ++ int col_slave_err = 0; ++ int col_slave_run = 0; ++ int col_slave_sql_run = 0; ++ + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); +@@ -107,6 +119,21 @@ + die (STATE_CRITICAL, _("slave store_result error: %s\n"), mysql_error (&mysql)); + } + ++ /* Get client & server version */ ++ local_mysql_client_version = mysql_get_client_version(); ++ local_mysql_server_version = (local_mysql_client_version >= 40000 ? mysql_get_server_version(&mysql) : local_mysql_get_server_version()); ++ ++ /* Fetch column names */ ++ while((field = mysql_fetch_field(res))) ++ { ++ if(strcmp (field->name, (local_mysql_server_version >= 40000 ? "Slave_IO_Running" : "Slave_Running")) == 0) { ++ col_slave_run = (mysql_field_tell(res) -1); ++ } ++ if(strcmp (field->name, "Slave_SQL_Running") == 0) { ++ col_slave_sql_run = (mysql_field_tell(res) -1); ++ } ++ } ++ + /* fetch the first row */ + if ( (row = mysql_fetch_row (res)) == NULL) { + mysql_free_result (res); +@@ -114,27 +141,38 @@ + 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); ++ if (local_mysql_server_version >= 40000) { ++ /* mysql 4.x.x */ ++ if ((col_slave_run > 0) && (col_slave_sql_run > 0)) { ++ snprintf (slaveresult, SLAVERESULTSIZE, "Slave IO: %s Slave SQL: %s", row[col_slave_run], row[col_slave_sql_run]); ++ if (strcmp (row[col_slave_run], "Yes") != 0 || strcmp (row[col_slave_sql_run], "Yes") != 0) { ++ col_slave_err = 1; ++ } ++ } else { ++ snprintf (slaveresult, SLAVERESULTSIZE, "Required Slave columns not found"); ++ col_slave_err = 1; + } +- + } else { +- /* mysql 4.x.x */ +- snprintf (slaveresult, SLAVERESULTSIZE, "Slave IO: %s Slave SQL: %s", row[9], row[10]); +- if (strcmp (row[9], "Yes") != 0 || strcmp (row[10], "Yes") != 0) { +- mysql_free_result (res); +- mysql_close (&mysql); +- die (STATE_CRITICAL, "%s\n", slaveresult); ++ /* mysql 3.23.x */ ++ if (col_slave_run > 0) { ++ snprintf (slaveresult, SLAVERESULTSIZE, _("Slave running: %s"), row[col_slave_run]); ++ if (strcmp (row[col_slave_run], "Yes") != 0) { ++ col_slave_err = 1; ++ } ++ } else { ++ snprintf (slaveresult, SLAVERESULTSIZE, "Required Slave column not found"); ++ col_slave_err = 1; + } + } + + /* free the result */ + mysql_free_result (res); ++ ++ /* Check for trouble */ ++ if(col_slave_err > 0) { ++ mysql_close (&mysql); ++ die (STATE_CRITICAL, "%s\n", slaveresult); ++ } + } + + /* close the connection */ +@@ -150,6 +188,16 @@ + return STATE_OK; + } + ++/* Get version number for server */ ++local_mysql_get_server_version(MYSQL *mysql) ++{ ++ uint major, minor, version; ++ char *pos= mysql->server_version, *end_pos; ++ major= (uint) strtoul(pos, &end_pos, 10); pos=end_pos+1; ++ minor= (uint) strtoul(pos, &end_pos, 10); pos=end_pos+1; ++ version= (uint) strtoul(pos, &end_pos, 10); ++ return (ulong) major*10000L+(ulong) (minor*100+version); ++} + + /* process command-line arguments */ + int -- cgit v1.2.3-74-g34f1