X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fcheck_mrtg.c;h=067429cf26eddc83518d22b2d60ddbff0d11cfbd;hb=d4c0948266f261525e12c58d58e0fc68987a9818;hp=5d429d7d7dbba79ad42afba15d53b948ac3333ab;hpb=22bd672d19c378f1e6124ee18e64e5a88cf53739;p=nagiosplug.git diff --git a/plugins/check_mrtg.c b/plugins/check_mrtg.c index 5d429d7..067429c 100644 --- a/plugins/check_mrtg.c +++ b/plugins/check_mrtg.c @@ -14,11 +14,13 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + $Id$ + ******************************************************************************/ const char *progname = "check_mrtg"; const char *revision = "$Revision$"; -const char *copyright = "1999-2001"; +const char *copyright = "1999-2004"; const char *email = "nagiosplug-devel@lists.sourceforge.net"; #include "common.h" @@ -35,30 +37,30 @@ int use_average = TRUE; int variable_number = -1; unsigned long value_warning_threshold = 0L; unsigned long value_critical_threshold = 0L; -char *value_label; -char *units_label; +char *label; +char *units; int main (int argc, char **argv) { - int result = STATE_OK; + int result = STATE_UNKNOWN; FILE *fp; int line; char input_buffer[MAX_INPUT_BUFFER]; char *temp_buffer; time_t current_time; - char error_message[MAX_INPUT_BUFFER]; + char* message; time_t timestamp = 0L; unsigned long average_value_rate = 0L; unsigned long maximum_value_rate = 0L; - unsigned long value_rate = 0L; + unsigned long rate = 0L; setlocale (LC_ALL, ""); bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); - if (process_arguments (argc, argv) != OK) - usage (_("Invalid command arguments supplied\n")); + if (process_arguments (argc, argv) == ERROR) + usage4 (_("Could not parse arguments\n")); /* open the MRTG log file for reading */ fp = fopen (log_file, "r"); @@ -111,7 +113,7 @@ main (int argc, char **argv) /* if we couldn't read enough data, return an unknown error */ if (line <= 2) { result = STATE_UNKNOWN; - sprintf (error_message, _("Unable to process MRTG log file\n")); + asprintf (&message, _("Unable to process MRTG log file\n")); } /* make sure the MRTG data isn't too old */ @@ -120,33 +122,39 @@ main (int argc, char **argv) if (expire_minutes > 0 && (current_time - timestamp) > (expire_minutes * 60)) { result = STATE_WARNING; - sprintf (error_message, _("MRTG data has expired (%d minutes old)\n"), + asprintf (&message, _("MRTG data has expired (%d minutes old)\n"), (int) ((current_time - timestamp) / 60)); } } /* else check the incoming/outgoing rates */ if (result == STATE_OK) { - if (use_average == TRUE) - value_rate = average_value_rate; + rate = average_value_rate; else - value_rate = maximum_value_rate; + rate = maximum_value_rate; - if (value_rate > value_critical_threshold) + if (rate > value_critical_threshold) result = STATE_CRITICAL; - else if (value_rate > value_warning_threshold) + else if (rate > value_warning_threshold) result = STATE_WARNING; + + asprintf (&message, "%s. %s = %lu %s|%s", + (use_average == TRUE) ? _("Avg") : _("Max"), + label, rate, units, + perfdata(label, (long) rate, units, + (int) value_warning_threshold, (long) value_warning_threshold, + (int) value_critical_threshold, (long) value_critical_threshold, + 0, 0, 0, 0)); } - sprintf (error_message, "%s. %s = %lu %s", - (use_average == TRUE) ? _("Ave") : _("Max"), value_label, value_rate, - units_label); - printf ("%s\n", error_message); + printf ("%s\n", message); return result; } - + + + /* process command-line arguments */ int process_arguments (int argc, char **argv) @@ -204,7 +212,7 @@ process_arguments (int argc, char **argv) case 'v': variable_number = atoi (optarg); if (variable_number < 1 || variable_number > 2) - usage (_("Invalid variable number\n")); + usage4 (_("Invalid variable number")); break; case 'w': /* critical time threshold */ value_warning_threshold = strtoul (optarg, NULL, 10); @@ -213,10 +221,10 @@ process_arguments (int argc, char **argv) value_critical_threshold = strtoul (optarg, NULL, 10); break; case 'l': /* label */ - value_label = optarg; + label = optarg; break; case 'u': /* timeout */ - units_label = optarg; + units = optarg; break; case 'V': /* version */ print_revision (progname, revision); @@ -225,7 +233,7 @@ process_arguments (int argc, char **argv) print_help (); exit (STATE_OK); case '?': /* help */ - usage (_("Invalid argument\n")); + usage2 (_("Unknown argument"), optarg); } } @@ -268,12 +276,12 @@ process_arguments (int argc, char **argv) value_critical_threshold = strtoul (argv[c++], NULL, 10); } - if (argc > c && strlen (value_label) == 0) { - value_label = argv[c++]; + if (argc > c && strlen (label) == 0) { + label = argv[c++]; } - if (argc > c && strlen (units_label) == 0) { - units_label = argv[c++]; + if (argc > c && strlen (units) == 0) { + units = argv[c++]; } return validate_arguments (); @@ -283,33 +291,30 @@ int validate_arguments (void) { if (variable_number == -1) - usage (_("You must supply the variable number\n")); + usage4 (_("You must supply the variable number")); - if (value_label == NULL) - value_label = strdup (""); + if (label == NULL) + label = strdup ("value"); - if (units_label == NULL) - units_label = strdup (""); + if (units == NULL) + units = strdup (""); return OK; } - - - void print_help (void) { print_revision (progname, revision); - printf (_("Copyright (c) 1999 Ethan Galstad \n")); - printf (_(COPYRIGHT), copyright, email); + printf ("Copyright (c) 1999 Ethan Galstad \n"); + printf (COPYRIGHT, copyright, email); printf(_("\ This plugin will check either the average or maximum value of one of the\n\ -two variables recorded in an MRTG log file.\n")); +two variables recorded in an MRTG log file.\n\n")); print_usage (); @@ -362,15 +367,14 @@ this plugin works well for monitoring that kind of data as well.\n\n")); - /* original command line: