Announcement

Collapse
No announcement yet.

Check_Mysql_Query

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Check_Mysql_Query

    Bonjour,

    J'ai compilé, check_mysql_query ensembles avec les nouveau plugins Nagios 1.4.4 et tous fonctionnent convenablement sans faute.

    Par contre un souci dans pour l'appli check_mysql_query, vous voyez je dois évalué le retour d'une requete et j'obtien des fausses alarms du au faite que je n'ai pas compris le formattage des warning-critical. Ils disent dans le -h que format des seuiles est comme ceci: start:end

    mais quand je teste ma commande :


    ./check_mysql_query -q "SELECT effRateIn FROM faisceaux WHERE name like '%T2_NAS_ANAG_FORF%'" -d cirpack-db -H localhost -P 3306 -u root -w 40,20 -c 19,10

    QUERY CRITIQUE: 'SELECT effRateIn FROM faisceaux WHERE name like '%T2_NAS_ANAG_FORF%'' returned 100,000000

    --------------------------------------------------------------------------------------


    ./check_mysql_query -q "SELECT effRateIn FROM faisceaux WHERE name like '%T2_NAS_ANAG_FORF%'" -d cirpack-db -H localhost -P 3306 -u root -w 40:20 -c 19:0

    Range format incorrect !
    Je comprend plus rien, je me suis cassé la tête là dessus et je comprend toujours pas. Lorsque le résulta = 100 cela veur dire qu'il est OK.

    Je veux crée un seuil "warning" de 40 à 20 et un seuil "critique" de 19 à 0.

    Alors dans la ligne 79 de lib/utils_base.c j'ai essayé de de changer l'opérateur de <= en >= pour qu'il accept les seuils en "start" plus petit que les seuils en "end". Toujour le même problem, il m'affiche critique là ou il ne faut pas je ne comprend plus rien !!!

    SVP AIDEZ MOI, Comment doit-je procéder pour inverser la façon dont check_mysql_query éffectue son "if else" ?

    Merci d'avance,

    Uday MOORJANI

  • #2
    Bonjour,

    J'aimerais bien t'aider mais je ne sais pas où récupérer les plugins Nagios 1.4.4! Où as tu récupérer cette version? La dernière, à ma connaissance, est la 1.4.3.

    Comment


    • #3
      http://nagiosplug.sourceforge.net il vient tout juste de sortir 08/08/2006

      Comment


      • #4
        Oui ça bon ok! Je suis désolé mais si je suis (du verbe suivre) le lien Download du bas de page, je n'ai que la 1.4.3, pas la 1.4.4.

        Comment


        • #5
          xcuse moi c'est moi qui me suis trompé,

          http://nagiosplug.sourceforge.net/snapshot/

          Comment


          • #6
            Ha ok! Je comprends mieux! Mais ceux là de plugins ne sont pas sensés être stables.

            Comment


            • #7
              Bon on reprends. Voici un exemple:
              Code:
              ./check_mysql_query -H localhost -d oreon_1_3 -u root -q 'select 100+1' -w 0:101 -c 0:200
              Là j'essaie de tester la valeur de la requète. Si le résultat est en dehors de l'intervalle 0:101 je suis en WARNING. Si le résultat est en dehors de l'intervalle 0:200 je suis en CRITICAL.

              Comment


              • #8
                Ce qui se passe, c'est que je dois crée des alertes pour des faisceaux sip (VOIP). Lorsque j'ai un taux d'ASR de 100, c'est OK par contre à partir de 40 ce la devien warning et a partir de 19 c'est critique.

                Excuse moi sincerement, mais je ne comprend pas ton exemple. J'ai certainement pas pigé qque choses. Pourrai tu réexpliqué stp ?

                Encore merci beaucoup pr ton aide.

                Comment


                • #9
                  Bonjour,

                  Lorsque tu mets un interval pour le seuil warning, le warning va être généré lorsque la valeur est EN DEHORS de cet interval. Dans ton cas, essaye de mettre:
                  Code:
                  ./check_mysql_query -q "SELECT effRateIn FROM faisceaux WHERE name like '%T2_NAS_ANAG_FORF%'" -d cirpack-db -H localhost -P 3306 -u root -w 41:100 -c 20:100
                  Par contre attention, la valeur 101 et toutes les valeurs au dessus de 100 vont remonter en critique...

                  Comment


                  • #10
                    Est ce que cela correspond à ce que tu cherchais?

                    Comment


                    • #11
                      Templuch, je me suis tapé le code j'ai changé les opérateurs de vérif j'ai ajouté des fonction dans la lib userbase.c.

                      Les modifs ont soient un commentaire "/* CIRPACK */" soit une fonction avec "_cirpack". Par contre je ferai un document sur la supervision des switch voix Cirpack. Les trap snmp c'est pas forcément pratique donc en faite j'extrait d'un fichier log sur le cirpack un relevé d'alarms que je map dans une base MySQL et que je QUERY avec check_mysql_query.

                      Ci joint le code des deux :

                      Check_MySQL_Query.c
                      Code:
                      /******************************************************************************
                      *
                      * CHECK_MYSQL_QUERY.C
                      *
                      * Program: Mysql plugin for Nagios
                      * License: GPL
                      * Copyright (c) 2006 Nagios Plugins Team, after Didi Rieder (check_mysql)
                      * 
                      * $Id: check_mysql_query.c,v 1.4 2006/07/13 12:50:21 tonvoon Exp $
                      *
                      * Description:
                      *  This plugin is for running arbitrary SQL and checking the results
                      *
                      ******************************************************************************/
                      
                      const char *progname = "check_mysql_query";
                      const char *revision = "$Revision: 1.4 $";
                      const char *copyright = "2006";
                      const char *email = "[email protected]";
                      
                      #include "common.h"
                      #include "utils.h"
                      #include "utils_base.h"
                      #include "netutils.h"
                      
                      #include <mysql.h>
                      #include <errmsg.h>
                      
                      char *db_user = NULL;
                      char *db_host = NULL;
                      char *db_pass = NULL;
                      char *db = NULL;
                      unsigned int db_port = MYSQL_PORT;
                      
                      int process_arguments (int, char **);
                      int validate_arguments (void);
                      void print_help (void);
                      void print_usage (void);
                      
                      char *sql_query = NULL;
                      int verbose = 0;
                      thresholds *my_thresholds = NULL;
                      
                      
                      int
                      main (int argc, char **argv)
                      {
                      
                      	MYSQL mysql;
                      	MYSQL_RES *res;
                      	MYSQL_ROW row;
                      	
                      	double value;
                      	char *error = NULL;
                      	int status;
                      
                      	setlocale (LC_ALL, "");
                      	bindtextdomain (PACKAGE, LOCALEDIR);
                      	textdomain (PACKAGE);
                      
                      	if (process_arguments (argc, argv) == ERROR)
                      		usage4 (_("Could not parse arguments"));
                      
                      	/* 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)
                      			die (STATE_WARNING, "QUERY %s: %s\n", _("WARNING"), mysql_error (&mysql));
                      		else if (mysql_errno (&mysql) == CR_VERSION_ERROR)
                      			die (STATE_WARNING, "QUERY %s: %s\n", _("WARNING"), mysql_error (&mysql));
                      		else if (mysql_errno (&mysql) == CR_OUT_OF_MEMORY)
                      			die (STATE_WARNING, "QUERY %s: %s\n", _("WARNING"), mysql_error (&mysql));
                      		else if (mysql_errno (&mysql) == CR_IPSOCK_ERROR)
                      			die (STATE_WARNING, "QUERY %s: %s\n", _("WARNING"), mysql_error (&mysql));
                      		else if (mysql_errno (&mysql) == CR_SOCKET_CREATE_ERROR)
                      			die (STATE_WARNING, "QUERY %s: %s\n", _("WARNING"), mysql_error (&mysql));
                      		else
                      			die (STATE_CRITICAL, "QUERY %s: %s\n", _("CRITICAL"), mysql_error (&mysql));
                      	}
                      
                      	if (mysql_query (&mysql, sql_query) != 0) {
                      		error = strdup(mysql_error(&mysql));
                      		mysql_close (&mysql);
                      		die (STATE_CRITICAL, "QUERY %s: %s - %s\n", _("CRITICAL"), _("Error with query"), error);
                      	}
                      
                      	/* store the result */
                      	if ( (res = mysql_store_result (&mysql)) == NULL) {
                      		error = strdup(mysql_error(&mysql));
                      		mysql_close (&mysql);
                      		die (STATE_CRITICAL, "QUERY %s: Error with store_result - %s\n", _("CRITICAL"), error);
                      	}
                      
                      	/* Check there is some data */
                      	if (mysql_num_rows(res) == 0) {
                      		mysql_close(&mysql);
                      		die (STATE_WARNING, "QUERY %s: %s\n", _("WARNING"), _("No rows returned"));
                      	}
                      
                      	/* fetch the first row */
                      	if ( (row = mysql_fetch_row (res)) == NULL) {
                      		error = strdup(mysql_error(&mysql));
                      		mysql_free_result (res);
                      		mysql_close (&mysql);
                      		die (STATE_CRITICAL, "QUERY %s: Fetch row error - %s\n", _("CRITICAL"), error);
                      	}
                      
                      	/* free the result */
                      	mysql_free_result (res);
                      
                      	/* close the connection */
                      	mysql_close (&mysql);
                      
                      	if (! is_numeric(row[0])) {
                      		die (STATE_CRITICAL, "QUERY %s: %s - '%s'\n", _("CRITICAL"), _("Is not a numeric"), row[0]);
                      	}
                      
                      	value = strtod(row[0], NULL);
                      
                      	if (verbose >= 3)
                      		printf("mysql result: %f", value);
                      
                      	status = get_status_cirpack(value, my_thresholds);
                      
                      	if (status == STATE_OK) {
                      		printf("QUERY %s: ", _("OK"));
                      	} else if (status == STATE_WARNING) {
                      		printf("QUERY %s: ", _("WARNING"));
                      	} else if (status == STATE_CRITICAL) {
                      		printf("QUERY %s: ", _("CRITICAL"));
                      	}
                      	printf(_("%3.0f%% ASR"),value);
                      	printf("\n");
                      
                      	return status;
                      }
                      
                      
                      /* process command-line arguments */
                      int
                      process_arguments (int argc, char **argv)
                      {
                      	int c;
                      	char *warning = NULL;
                      	char *critical = NULL;
                      
                      	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'},
                      		{"verbose", no_argument, 0, 'v'},
                      		{"version", no_argument, 0, 'V'},
                      		{"help", no_argument, 0, 'h'},
                      		{"query", required_argument, 0, 'q'},
                      		{"warning", required_argument, 0, 'w'},
                      		{"critical", required_argument, 0, 'c'},
                      		{0, 0, 0, 0}
                      	};
                      
                      	if (argc < 1)
                      		return ERROR;
                      
                      	while (1) {
                      		c = getopt_long (argc, argv, "hvVSP:p:u:d:H:q:w:c:", 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 */
                      			asprintf(&db_pass, "%s", optarg);
                      
                      			/* Delete the password from process list */
                      			while (*optarg != '\0') {
                      				*optarg = 'X';
                      				optarg++;
                      			}
                      			break;
                      		case 'P':									/* critical time threshold */
                      			db_port = atoi (optarg);
                      			break;
                      		case 'v':
                      			verbose++;
                      			break;
                      		case 'V':									/* version */
                      			print_revision (progname, revision);
                      			exit (STATE_OK);
                      		case 'h':									/* help */
                      			print_help ();
                      			exit (STATE_OK);
                      		case 'q':
                      			asprintf(&sql_query, "%s", optarg);
                      			break;
                      		case 'w':
                      			warning = optarg;
                      			break;
                      		case 'c':
                      			critical = optarg;
                      			break;
                      		case '?':									/* help */
                      			usage2 (_("Unknown argument"), optarg);
                      		}
                      	}
                      
                      	c = optind;
                      
                      	set_thresholds_cirpack(&my_thresholds, warning, critical);
                      
                      	return validate_arguments ();
                      }
                      
                      
                      int
                      validate_arguments (void)
                      {
                      	if (sql_query == NULL)
                      		usage("Must specify a SQL query to run");
                      
                      	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 ("%s\n", _("This program checks a query result against threshold levels"));
                      
                        printf ("\n\n");
                      
                      	print_usage ();
                      
                      	printf (_(UT_HELP_VRSN));
                      	printf (" -q, --query=STRING\n");
                      	printf ("    %s\n", _("SQL query to run. Only first column in first row will be read"));
                      	printf (_(UT_WARN_CRIT_RANGE));
                      	printf (_(UT_HOST_PORT), 'P', myport);
                      	printf (" -d, --database=STRING\n");
                      	printf ("    %s\n", _("Database to check"));
                      	printf (" -u, --username=STRING\n");
                      	printf ("    %s\n", _("Username to login with"));
                      	printf (" -p, --password=STRING\n");
                      	printf ("    %s\n", _("Password to login with"));
                      	printf ("    ==> %s <==\n", _("IMPORTANT: THIS FORM OF AUTHENTICATION IS NOT SECURE!!!"));
                      
                      	printf ("\n");
                      
                      	printf ("%s\n", _("A query is required. The result from the query should be numeric."));
                      	printf ("%s\n", _("For extra security, create a user with minimal access."));
                      
                      	printf (_(UT_SUPPORT));
                      }
                      
                      
                      void
                      print_usage (void)
                      {
                        printf (_("Usage:"));
                      	printf ("%s -q SQL_query [-w warn] [-c crit]\n",progname);
                        printf ("[-d database] [-H host] [-P port] [-u user] [-p password]\n");
                      }

                      utils_base.c

                      Code:
                      /*****************************************************************************
                       *
                       * utils_base.c
                       *
                       * Library of useful functions for plugins
                       * These functions are tested with libtap. See tests/ directory
                       *
                       * Copyright (c) 2006 Nagios Plugin Development Team
                       * License: GPL
                       *
                       * $Revision: 1.2 $
                       * $Date: 2006/07/14 09:47:25 $
                       ****************************************************************************/
                      
                      #include <stdarg.h>
                      #include "common.h"
                      #include "utils_base.h"
                      
                      void
                      die (int result, const char *fmt, ...)
                      {
                      	va_list ap;
                      	va_start (ap, fmt);
                      	vprintf (fmt, ap);
                      	va_end (ap);
                      	exit (result);
                      }
                      
                      void set_range_start (range *this, double value) {
                      	this->start = value;
                      	this->start_infinity = FALSE;
                      }
                      
                      void set_range_end (range *this, double value) {
                      	this->end = value;
                      	this->end_infinity = FALSE;
                      }
                      
                      range
                      *parse_range_string (char *str) {
                      	range *temp_range;
                      	double start;
                      	double end;
                      	char *end_str;
                      
                      	temp_range = (range *) malloc(sizeof(range));
                      
                      	/* Set defaults */
                      	temp_range->start = 0;
                      	temp_range->start_infinity = FALSE;
                      	temp_range->end = 0;
                      	temp_range->end_infinity = TRUE;
                      	temp_range->alert_on = OUTSIDE;
                      
                      	if (str[0] == '@') {
                      		temp_range->alert_on = INSIDE;
                      		str++;
                      	}
                      
                      	end_str = index(str, ':');
                      	if (end_str != NULL) {
                      		if (str[0] == '~') {
                      			temp_range->start_infinity = TRUE;
                      		} else {
                      			start = strtod(str, NULL);	/* Will stop at the ':' */
                      			set_range_start(temp_range, start);
                      		}
                      		end_str++;		/* Move past the ':' */
                      	} else {
                      		end_str = str;
                      	}
                      	end = strtod(end_str, NULL);
                      	if (strcmp(end_str, "") != 0) {
                      		set_range_end(temp_range, end);
                      	}
                      
                      	if (temp_range->start_infinity == TRUE || 
                      		temp_range->end_infinity == TRUE ||
                      		temp_range->start <= temp_range->end) {
                      		return temp_range;
                      	}
                      	free(temp_range);
                      	return NULL;
                      }
                      
                      /* CIRPACK */
                      range
                      *parse_range_string_cirpack (char *str) {
                      	range *temp_range;
                      	double start;
                      	double end;
                      	char *end_str;
                      
                      	temp_range = (range *) malloc(sizeof(range));
                      
                      	/* Set defaults */
                      	temp_range->start = 0;
                      	temp_range->start_infinity = FALSE;
                      	temp_range->end = 0;
                      	temp_range->end_infinity = TRUE;
                      	temp_range->alert_on = OUTSIDE;
                      
                      	if (str[0] == '@') {
                      		temp_range->alert_on = INSIDE;
                      		str++;
                      	}
                      
                      	end_str = index(str, ':');
                      	if (end_str != NULL) {
                      		if (str[0] == '~') {
                      			temp_range->start_infinity = TRUE;
                      		} else {
                      			start = strtod(str, NULL);	/* Will stop at the ':' */
                      			set_range_start(temp_range, start);
                      		}
                      		end_str++;		/* Move past the ':' */
                      	} else {
                      		end_str = str;
                      	}
                      	end = strtod(end_str, NULL);
                      	if (strcmp(end_str, "") != 0) {
                      		set_range_end(temp_range, end);
                      	}
                      
                      	if (temp_range->start_infinity == TRUE || 
                      		temp_range->end_infinity == TRUE ||
                      		temp_range->start >= temp_range->end) {
                      		return temp_range;
                      	}
                      	free(temp_range);
                      	return NULL;
                      }
                      
                      /* returns 0 if okay, otherwise 1 */
                      int
                      _set_thresholds(thresholds **my_thresholds, char *warn_string, char *critical_string)
                      {
                      	thresholds *temp_thresholds = NULL;
                      
                      	temp_thresholds = malloc(sizeof(temp_thresholds));
                      
                      	temp_thresholds->warning = NULL;
                      	temp_thresholds->critical = NULL;
                      
                      	if (warn_string != NULL) {
                      		if ((temp_thresholds->warning = parse_range_string(warn_string)) == NULL) {
                      			return 1;
                      		}
                      	}
                      	if (critical_string != NULL) {
                      		if ((temp_thresholds->critical = parse_range_string(critical_string)) == NULL) {
                      			return 1;
                      		}
                      	}
                      
                      	if (*my_thresholds > 0) {	/* Not sure why, but sometimes could be -1 */
                      		/* printf("Freeing here: %d\n", *my_thresholds); */
                      		free(*my_thresholds);
                      	}
                      	*my_thresholds = temp_thresholds;
                      
                      	return 0;
                      }
                      
                      /* CIRPACK */
                      int
                      _set_thresholds_cirpack(thresholds **my_thresholds, char *warn_string, char *critical_string)
                      {
                      	thresholds *temp_thresholds = NULL;
                      
                      	temp_thresholds = malloc(sizeof(temp_thresholds));
                      
                      	temp_thresholds->warning = NULL;
                      	temp_thresholds->critical = NULL;
                      
                      	if (warn_string != NULL) {
                      		if ((temp_thresholds->warning = parse_range_string_cirpack(warn_string)) == NULL) {
                      			return 1;
                      		}
                      	}
                      	if (critical_string != NULL) {
                      		if ((temp_thresholds->critical = parse_range_string_cirpack(critical_string)) == NULL) {
                      			return 1;
                      		}
                      	}
                      
                      	if (*my_thresholds > 0) {	/* Not sure why, but sometimes could be -1 */
                      		/* printf("Freeing here: %d\n", *my_thresholds); */
                      		free(*my_thresholds);
                      	}
                      	*my_thresholds = temp_thresholds;
                      
                      	return 0;
                      }
                      
                      void
                      set_thresholds(thresholds **my_thresholds, char *warn_string, char *critical_string)
                      {
                      	if (_set_thresholds(my_thresholds, warn_string, critical_string) == 0) {
                      		return;
                      	} else {
                      		die(STATE_UNKNOWN, _("Range format incorrect"));
                      	}
                      }
                      
                      /* CIRPACK */
                      void
                      set_thresholds_cirpack(thresholds **my_thresholds, char *warn_string, char *critical_string)
                      {
                      	if (_set_thresholds_cirpack(my_thresholds, warn_string, critical_string) == 0) {
                      		return;
                      	} else {
                      		die(STATE_UNKNOWN, _("Range format incorrect"));
                      	}
                      }
                      
                      void print_thresholds(const char *threshold_name, thresholds *my_threshold) {
                      	printf("%s - ", threshold_name);
                      	if (! my_threshold) {
                      		printf("Threshold not set");
                      	} else {
                      		if (my_threshold->warning) {
                      			printf("Warning: start=%g end=%g; ", my_threshold->warning->start, my_threshold->warning->end);
                      		} else {
                      			printf("Warning not set; ");
                      		}
                      		if (my_threshold->critical) {
                      			printf("Critical: start=%g end=%g", my_threshold->critical->start, my_threshold->critical->end);
                      		} else {
                      			printf("Critical not set");
                      		}
                      	}
                      	printf("\n");
                      }
                      
                      /* Returns TRUE if alert should be raised based on the range */
                      int
                      check_range(double value, range *my_range)
                      {
                      	int false = FALSE;
                      	int true = TRUE;
                      	
                      	if (my_range->alert_on == INSIDE) {
                      		false = TRUE;
                      		true = FALSE;
                      	}
                      
                      	if (my_range->end_infinity == FALSE && my_range->start_infinity == FALSE) {
                      		if ((my_range->start <= value) && (value <= my_range->end)) {
                      			return false;
                      		} else {
                      			return true;
                      		}
                      	} else if (my_range->start_infinity == FALSE && my_range->end_infinity == TRUE) {
                      		if (my_range->start <= value) {
                      			return false;
                      		} else {
                      			return true;
                      		}
                      	} else if (my_range->start_infinity == TRUE && my_range->end_infinity == FALSE) {
                      		if (value <= my_range->end) {
                      			return false;
                      		} else {
                      			return true;
                      		}
                      	} else {
                      		return false;
                      	}
                      }
                      
                      /* CIRPACK */ 
                      int
                      check_range_cirpack(double value, range *my_range)
                      {
                      	int false = FALSE;
                      	int true = TRUE;
                      	
                      	if (my_range->alert_on == INSIDE) {
                      		false = TRUE;
                      		true = FALSE;
                      	}
                          
                      	if (my_range->end_infinity == FALSE && my_range->start_infinity == FALSE) {
                      		if ((value >=  my_range->start) && (value >= my_range->end)) {
                      			return false;
                      		} else {
                      			return true;
                      		}
                      	} else if (my_range->start_infinity == FALSE && my_range->end_infinity == TRUE) {
                      		if (value <= my_range->start) {
                      			return false;
                      		} else {
                      			return true;
                      		}
                      	} else if (my_range->start_infinity == TRUE && my_range->end_infinity == FALSE) {
                      		if (value <= my_range->end) {
                      			return false;
                      		} else {
                      			return true;
                      		}
                      	} else {
                      		return false;
                      	}
                      }
                      
                      /* CIRPACK */
                      int
                      get_status_cirpack(double value, thresholds *my_thresholds)
                      {
                      	if (my_thresholds->critical != NULL) {
                      		if (check_range_cirpack(value, my_thresholds->critical) == TRUE) {
                      			return STATE_CRITICAL;
                      		}
                      	}
                      	if (my_thresholds->warning != NULL) {
                      		if (check_range_cirpack(value, my_thresholds->warning) == TRUE) {
                      			return STATE_WARNING;
                      		}
                      	}
                      	return STATE_OK;
                      }
                      
                      
                      /* Returns status */
                      int
                      get_status(double value, thresholds *my_thresholds)
                      {
                      	if (my_thresholds->critical != NULL) {
                      		if (check_range(value, my_thresholds->critical) == TRUE) {
                      			return STATE_CRITICAL;
                      		}
                      	}
                      	if (my_thresholds->warning != NULL) {
                      		if (check_range(value, my_thresholds->warning) == TRUE) {
                      			return STATE_WARNING;
                      		}
                      	}
                      	return STATE_OK;
                      }
                      
                      char *np_escaped_string (const char *string) {
                      	char *data;
                      	int i, j=0;
                      	data = strdup(string);
                      	for (i=0; data[i]; i++) {
                      		if (data[i] == '\\') {
                      			switch(data[++i]) {
                      				case 'n':
                      					data[j++] = '\n';
                      					break;
                      				case 'r':
                      					data[j++] = '\r';
                      					break;
                      				case 't':
                      					data[j++] = '\t';
                      					break;
                      				case '\\':
                      					data[j++] = '\\';
                      					break;
                      				default:
                      					data[j++] = data[i];
                      			}
                      		} else {
                      			data[j++] = data[i];
                      		}
                      	}
                      	data[j] = '\0';
                      	return data;
                      }

                      Comment


                      • #12
                        Templuch, je me suis tapé le code j'ai changé les opérateurs de vérif j'ai ajouté des fonction dans la lib userbase.c.
                        Heu... pourquoi avoir fait ça alors que le plugin fait EXACTEMENT ce que tu cherches? Soit je n'ai rien compris à ce que tu voulais faire soit c'est toi que je ne te comprends pas. :?

                        Comment

                        Working...
                        X