From 250a82a57c9b467ff14036907b4fdaa5dc95bfd0 Mon Sep 17 00:00:00 2001 From: Ton Voon Date: Mon, 17 Dec 2007 11:47:33 +0000 Subject: [PATCH] Add check_nt -v INSTANCES (Alessandro Ren) git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1877 f882894a-f735-0410-b71e-b25c423dba1c --- NEWS | 3 +++ THANKS.in | 1 + plugins/check_nt.c | 47 ++++++++++++++++++++++++++++++++++++++-------- 3 files changed, 43 insertions(+), 8 deletions(-) diff --git a/NEWS b/NEWS index b48676d..37d2ac1 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,8 @@ This file documents the major additions and syntax changes between releases. +1.4.12 or 1.5 ?? + Added ./check_nt -v INSTANCES to count number of instances (Alessandro Ren) + 1.4.11 13th December 2007 Fixed check_http regression in 1.4.10 where following redirects to relative URLs on virtual hosts failed if both "-H" and "-I" were used diff --git a/THANKS.in b/THANKS.in index 54fbfd5..8d64f65 100644 --- a/THANKS.in +++ b/THANKS.in @@ -229,3 +229,4 @@ Matteo HCE Valsasna Bernhard Fischer fabiodds Tom Payerle +Alessandro Ren diff --git a/plugins/check_nt.c b/plugins/check_nt.c index fe47a58..b916cc0 100644 --- a/plugins/check_nt.c +++ b/plugins/check_nt.c @@ -55,7 +55,8 @@ enum checkvars { CHECK_PROCSTATE, CHECK_MEMUSE, CHECK_COUNTER, - CHECK_FILEAGE + CHECK_FILEAGE, + CHECK_INSTANCES }; enum { @@ -414,7 +415,7 @@ int main(int argc, char **argv){ return_code=STATE_WARNING; else return_code=STATE_OK; - } + } else { /* inverse thresholds */ if(check_critical_value==TRUE && age_in_minutes <= critical_value) return_code=STATE_CRITICAL; @@ -426,6 +427,21 @@ int main(int argc, char **argv){ } break; + case CHECK_INSTANCES: + if (value_list==NULL) + output_message = strdup (_("No counter specified")); + else { + asprintf(&send_buffer,"%s&10&%s", req_password,value_list); + fetch_data (server_address, server_port, send_buffer); + if (!strncmp(recv_buffer,"ERROR",5)) { + printf("NSClient - %s\n",recv_buffer); + exit(STATE_UNKNOWN); + } + asprintf(&output_message,"%s",recv_buffer); + return_code=STATE_OK; + } + break; + case CHECK_NONE: default: usage4 (_("Please specify a variable to check")); @@ -483,14 +499,13 @@ int process_arguments(int argc, char **argv){ strcpy(argv[c],"-c"); } - while (1){ + while (1) { c = getopt_long(argc,argv,"+hVH:t:c:w:p:v:l:s:d:",longopts,&option); if (c==-1||c==EOF||c==1) break; - switch (c) - { + switch (c) { case '?': /* print short usage statement if args not parsable */ usage5 (); case 'h': /* help */ @@ -533,6 +548,8 @@ int process_arguments(int argc, char **argv){ vars_to_check=CHECK_COUNTER; else if(!strcmp(optarg,"FILEAGE")) vars_to_check=CHECK_FILEAGE; + else if(!strcmp(optarg,"INSTANCES")) + vars_to_check=CHECK_INSTANCES; else return ERROR; break; @@ -671,7 +688,7 @@ void print_help(void) printf (" %s\n", "MEMUSE ="); printf (" %s\n", _("Memory use.")); printf (" %s\n", _("Warning and critical thresholds can be specified with -w and -c.")); - printf (" %s\n,", "SERVICESTATE ="); + printf (" %s\n", "SERVICESTATE ="); printf (" %s\n", _("Check the state of one or several services.")); printf (" %s\n", _("Request a -l parameters with the following syntax:")); printf (" %s\n", _("-l ,,,...")); @@ -686,10 +703,24 @@ void print_help(void) printf (" %s\n", _("-l \"\\\\\\\\counter\",\"")); printf (" %s\n", _("The parameter is optional and is given to a printf ")); printf (" %s\n", _("output command which requires a float parameter.")); - printf (" %s\n\n", _("If does not include \"%%\", it is used as a label.")); + printf (" %s\n", _("If does not include \"%%\", it is used as a label.")); printf (" %s\n", _("Some examples:")); printf (" %s\n", "\"Paging file usage is %%.2f %%%%\""); - printf (" %s\n\n", "\"%%.f %%%% paging file used.\""); + printf (" %s\n", "\"%%.f %%%% paging file used.\""); + printf (" %s\n", "INSTANCES ="); + printf (" %s\n", _("Check any performance counter object of Windows NT/2000.")); + printf (" %s\n", _("Syntax: check_nt -H -p -v INSTANCES -l ")); + printf (" %s\n", _(" is a Windows Perfmon Counter object (eg. Process),")); + printf (" %s\n", _("if it is two words, it should be enclosed in quotes")); + printf (" %s\n", _("The returned results will be a comma-separated list of instances on ")); + printf (" %s\n", _(" the selected computer for that object.")); + printf (" %s\n", _("The purpose of this is to be run from command line to determine what instances")); + printf (" %s\n", _(" are available for monitoring without having to log onto the Windows server")); + printf (" %s\n", _(" to run Perfmon directly.")); + printf (" %s\n", _("It can also be used in scripts that automatically create Nagios service")); + printf (" %s\n", _(" configuration files.")); + printf (" %s\n", _("Some examples:")); + printf (" %s\n\n", _("check_nt -H 192.168.1.1 -p 1248 -v INSTANCES -l Process")); printf (_("Notes:")); printf (" %s\n", _("- The NSClient service should be running on the server to get any information")); printf (" %s\n", "(http://nsclient.ready2run.nl)."); -- 2.30.2