> Can you please check it and see if you think it's sufficient. If it's not I am
> willing to integrate the rest of your patch, but I'd like to have assurance 
> from
> upstream before that they are going to integrate it too, in the next 
> release...

The patch contained checking from the slave point of view, but not from
the master.  Attached is a new patch against the current version that
provides the latter as well.

-- 
Ian Gulliver
Penguin Hosting
"Failure is not an option; it comes bundled with your Microsoft products."
diff -udr nagios-plugins-1.4/plugins/check_mysql.c 
nagios-plugins-1.4-slave/plugins/check_mysql.c
--- nagios-plugins-1.4/plugins/check_mysql.c    2005-02-22 11:35:35.000000000 
-0500
+++ nagios-plugins-1.4-slave/plugins/check_mysql.c      2005-02-22 
12:01:54.000000000 -0500
@@ -34,6 +34,7 @@
 char *db = NULL;
 unsigned int db_port = MYSQL_PORT;
 int check_slave = 0;
+char *slave_host = NULL;
 
 int process_arguments (int, char **);
 int validate_arguments (void);
@@ -137,6 +138,34 @@
                mysql_free_result (res);
        }
 
+       if(slave_host != NULL) {
+               int found = 0;
+               /* check for connected slave host */
+               if (mysql_query (&mysql, "show slave hosts") != 0) {
+                       mysql_close (&mysql);
+                       die (STATE_CRITICAL, _("slave hosts query error: 
%s\n"), mysql_error (&mysql));
+               }
+
+               /* store the result */
+               if ( (res = mysql_store_result (&mysql)) == NULL) {
+                       mysql_close (&mysql);
+                       die (STATE_CRITICAL, _("slave hosts store_result error: 
%s\n"), mysql_error (&mysql));
+               }
+
+               /* fetch the first row */
+               while ( (row = mysql_fetch_row (res)) != NULL) {
+                       if (slave_host[0] != '\0' && strcmp(row[1],slave_host) 
!= 0)
+                               continue;
+                       found = 1;
+               }
+
+               if (found == 0)
+                       die (STATE_CRITICAL, "Slave host %s%snot connected\n", 
slave_host, slave_host[0] == '\0' ? "" : " ");
+
+               /* free the result */
+               mysql_free_result (res);
+       }
+
        /* close the connection */
        mysql_close (&mysql);
 
@@ -165,6 +194,7 @@
                {"password", required_argument, 0, 'p'},
                {"port", required_argument, 0, 'P'},
                {"check-slave", no_argument, 0, 'S'},
+               {"slave-host", optional_argument, 0, 's'},
                {"verbose", no_argument, 0, 'v'},
                {"version", no_argument, 0, 'V'},
                {"help", no_argument, 0, 'h'},
@@ -175,7 +205,7 @@
                return ERROR;
 
        while (1) {
-               c = getopt_long (argc, argv, "hVSP:p:u:d:H:", longopts, 
&option);
+               c = getopt_long (argc, argv, "hVSP:p:u:d:H:s::", longopts, 
&option);
 
                if (c == -1 || c == EOF)
                        break;
@@ -204,6 +234,12 @@
                case 'S':
                        check_slave = 1;                                        
                /* check-slave */
                        break;
+               case 's':
+                       if (optarg == NULL)
+                               slave_host = "";
+                       else
+                               slave_host = optarg;
+                       break;
                case 'V':                                                       
                /* version */
                        print_revision (progname, revision);
                        exit (STATE_OK);
@@ -289,7 +325,9 @@
    ==> 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"));
+   Check if the slave thread is running properly.\n\
+ -s, --slave-host[=STRING]\n\
+   Check if a slave host (named STRING) is connected.\n"));
 
        printf (_("\n\
 There are no required arguments. By default, the local database with\n\

Attachment: signature.asc
Description: Digital signature

Reply via email to