From 520617e398682322f0e79e932101d7235e41aeb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenz=20K=C3=A4stle?= <12514511+RincewindsHat@users.noreply.github.com> Date: Thu, 31 Oct 2024 14:41:42 +0100 Subject: check_nt: clang-format diff --git a/plugins/check_nt.c b/plugins/check_nt.c index 19c050d..e0d0c23 100644 --- a/plugins/check_nt.c +++ b/plugins/check_nt.c @@ -1,36 +1,36 @@ /***************************************************************************** -* -* Monitoring check_nt plugin -* -* License: GPL -* Copyright (c) 2000-2002 Yves Rubin (rubiyz@yahoo.com) -* Copyright (c) 2003-2007 Monitoring Plugins Development Team -* -* Description: -* -* This file contains the check_nt plugin -* -* This plugin collects data from the NSClient service running on a -* Windows NT/2000/XP/2003 server. -* This plugin requires NSClient software to run on NT -* (http://nsclient.ready2run.nl/) -* -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -* -* -*****************************************************************************/ + * + * Monitoring check_nt plugin + * + * License: GPL + * Copyright (c) 2000-2002 Yves Rubin (rubiyz@yahoo.com) + * Copyright (c) 2003-2007 Monitoring Plugins Development Team + * + * Description: + * + * This file contains the check_nt plugin + * + * This plugin collects data from the NSClient service running on a + * Windows NT/2000/XP/2003 server. + * This plugin requires NSClient software to run on NT + * (http://nsclient.ready2run.nl/) + * + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * + *****************************************************************************/ const char *progname = "check_nt"; const char *copyright = "2000-2007"; @@ -59,75 +59,75 @@ enum { PORT = 1248 }; -char *server_address=NULL; -char *volume_name=NULL; -int server_port=PORT; -char *value_list=NULL; -char *req_password=NULL; +char *server_address = NULL; +char *volume_name = NULL; +int server_port = PORT; +char *value_list = NULL; +char *req_password = NULL; unsigned long lvalue_list[MAX_VALUE_LIST]; -unsigned long warning_value=0L; -unsigned long critical_value=0L; -bool check_warning_value=false; -bool check_critical_value=false; +unsigned long warning_value = 0L; +unsigned long critical_value = 0L; +bool check_warning_value = false; +bool check_critical_value = false; enum checkvars vars_to_check = CHECK_NONE; bool show_all = false; char recv_buffer[MAX_INPUT_BUFFER]; -void fetch_data (const char* address, int port, const char* sendb); +void fetch_data(const char *address, int port, const char *sendb); int process_arguments(int, char **); void preparelist(char *string); bool strtoularray(unsigned long *array, char *string, const char *delim); void print_help(void); void print_usage(void); -int main(int argc, char **argv){ +int main(int argc, char **argv) { -/* should be int result = STATE_UNKNOWN; */ + /* should be int result = STATE_UNKNOWN; */ int return_code = STATE_UNKNOWN; - char *send_buffer=NULL; - char *output_message=NULL; - char *perfdata=NULL; - char *temp_string=NULL; - char *temp_string_perf=NULL; - char *description=NULL,*counter_unit = NULL; + char *send_buffer = NULL; + char *output_message = NULL; + char *perfdata = NULL; + char *temp_string = NULL; + char *temp_string_perf = NULL; + char *description = NULL, *counter_unit = NULL; char *minval = NULL, *maxval = NULL, *errcvt = NULL; - char *fds=NULL, *tds=NULL; + char *fds = NULL, *tds = NULL; char *numstr; - double total_disk_space=0; - double free_disk_space=0; - double percent_used_space=0; - double warning_used_space=0; - double critical_used_space=0; - double mem_commitLimit=0; - double mem_commitByte=0; + double total_disk_space = 0; + double free_disk_space = 0; + double percent_used_space = 0; + double warning_used_space = 0; + double critical_used_space = 0; + double mem_commitLimit = 0; + double mem_commitByte = 0; double fminval = 0, fmaxval = 0; unsigned long utilization; unsigned long uptime; unsigned long age_in_minutes; double counter_value = 0.0; - int offset=0; - int updays=0; - int uphours=0; - int upminutes=0; + int offset = 0; + int updays = 0; + int uphours = 0; + int upminutes = 0; bool isPercent = false; bool allRight = false; - setlocale (LC_ALL, ""); - bindtextdomain (PACKAGE, LOCALEDIR); - textdomain (PACKAGE); + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); /* Parse extra opts if any */ - argv=np_extra_opts (&argc, argv, progname); + argv = np_extra_opts(&argc, argv, progname); - if(process_arguments(argc,argv) == ERROR) - usage4 (_("Could not parse arguments")); + if (process_arguments(argc, argv) == ERROR) + usage4(_("Could not parse arguments")); /* initialize alarm signal handling */ - signal(SIGALRM,socket_timeout_alarm_handler); + signal(SIGALRM, socket_timeout_alarm_handler); /* set socket timeout */ alarm(socket_timeout); @@ -137,61 +137,58 @@ int main(int argc, char **argv){ case CHECK_CLIENTVERSION: xasprintf(&send_buffer, "%s&1", req_password); - fetch_data (server_address, server_port, send_buffer); + fetch_data(server_address, server_port, send_buffer); if (value_list != NULL && strcmp(recv_buffer, value_list) != 0) { - xasprintf (&output_message, _("Wrong client version - running: %s, required: %s"), recv_buffer, value_list); + xasprintf(&output_message, _("Wrong client version - running: %s, required: %s"), recv_buffer, value_list); return_code = STATE_WARNING; } else { - xasprintf (&output_message, "%s", recv_buffer); + xasprintf(&output_message, "%s", recv_buffer); return_code = STATE_OK; } break; case CHECK_CPULOAD: - if (value_list==NULL) - output_message = strdup (_("missing -l parameters")); - else if (! strtoularray(lvalue_list,value_list,",")) - output_message = strdup (_("wrong -l parameter.")); + if (value_list == NULL) + output_message = strdup(_("missing -l parameters")); + else if (!strtoularray(lvalue_list, value_list, ",")) + output_message = strdup(_("wrong -l parameter.")); else { /* -l parameters is present with only integers */ - return_code=STATE_OK; - temp_string = strdup (_("CPU Load")); - temp_string_perf = strdup (" "); + return_code = STATE_OK; + temp_string = strdup(_("CPU Load")); + temp_string_perf = strdup(" "); /* loop until one of the parameters is wrong or not present */ - while (lvalue_list[0+offset]> (unsigned long)0 && - lvalue_list[0+offset]<=(unsigned long)17280 && - lvalue_list[1+offset]> (unsigned long)0 && - lvalue_list[1+offset]<=(unsigned long)100 && - lvalue_list[2+offset]> (unsigned long)0 && - lvalue_list[2+offset]<=(unsigned long)100) { + while (lvalue_list[0 + offset] > (unsigned long)0 && lvalue_list[0 + offset] <= (unsigned long)17280 && + lvalue_list[1 + offset] > (unsigned long)0 && lvalue_list[1 + offset] <= (unsigned long)100 && + lvalue_list[2 + offset] > (unsigned long)0 && lvalue_list[2 + offset] <= (unsigned long)100) { /* Send request and retrieve data */ - xasprintf(&send_buffer,"%s&2&%lu",req_password,lvalue_list[0+offset]); - fetch_data (server_address, server_port, send_buffer); + xasprintf(&send_buffer, "%s&2&%lu", req_password, lvalue_list[0 + offset]); + fetch_data(server_address, server_port, send_buffer); - utilization=strtoul(recv_buffer,NULL,10); + utilization = strtoul(recv_buffer, NULL, 10); /* Check if any of the request is in a warning or critical state */ - if(utilization >= lvalue_list[2+offset]) - return_code=STATE_CRITICAL; - else if(utilization >= lvalue_list[1+offset] && return_code= lvalue_list[2 + offset]) + return_code = STATE_CRITICAL; + else if (utilization >= lvalue_list[1 + offset] && return_code < STATE_WARNING) + return_code = STATE_WARNING; + + xasprintf(&output_message, _(" %lu%% (%lu min average)"), utilization, lvalue_list[0 + offset]); + xasprintf(&temp_string, "%s%s", temp_string, output_message); + xasprintf(&perfdata, _(" '%lu min avg Load'=%lu%%;%lu;%lu;0;100"), lvalue_list[0 + offset], utilization, + lvalue_list[1 + offset], lvalue_list[2 + offset]); + xasprintf(&temp_string_perf, "%s%s", temp_string_perf, perfdata); + offset += 3; /* move across the array */ } - if (strlen(temp_string)>10) { /* we had at least one loop */ - output_message = strdup (temp_string); + if (strlen(temp_string) > 10) { /* we had at least one loop */ + output_message = strdup(temp_string); perfdata = temp_string_perf; } else - output_message = strdup (_("not enough values for -l parameters")); + output_message = strdup(_("not enough values for -l parameters")); } break; @@ -200,16 +197,14 @@ int main(int argc, char **argv){ if (value_list == NULL) { value_list = "minutes"; } - if (strncmp(value_list, "seconds", strlen("seconds") + 1 ) && - strncmp(value_list, "minutes", strlen("minutes") + 1) && - strncmp(value_list, "hours", strlen("hours") + 1) && - strncmp(value_list, "days", strlen("days") + 1)) { + if (strncmp(value_list, "seconds", strlen("seconds") + 1) && strncmp(value_list, "minutes", strlen("minutes") + 1) && + strncmp(value_list, "hours", strlen("hours") + 1) && strncmp(value_list, "days", strlen("days") + 1)) { - output_message = strdup (_("wrong -l argument")); + output_message = strdup(_("wrong -l argument")); } else { xasprintf(&send_buffer, "%s&3", req_password); - fetch_data (server_address, server_port, send_buffer); - uptime=strtoul(recv_buffer,NULL,10); + fetch_data(server_address, server_port, send_buffer); + uptime = strtoul(recv_buffer, NULL, 10); updays = uptime / 86400; uphours = (uptime % 86400) / 3600; upminutes = ((uptime % 86400) % 3600) / 60; @@ -222,57 +217,58 @@ int main(int argc, char **argv){ uptime = uptime / 86400; /* else uptime in seconds, nothing to do */ - xasprintf(&output_message,_("System Uptime - %u day(s) %u hour(s) %u minute(s) |uptime=%lu"),updays, uphours, upminutes, uptime); + xasprintf(&output_message, _("System Uptime - %u day(s) %u hour(s) %u minute(s) |uptime=%lu"), updays, uphours, upminutes, + uptime); if (check_critical_value && uptime <= critical_value) - return_code=STATE_CRITICAL; + return_code = STATE_CRITICAL; else if (check_warning_value && uptime <= warning_value) - return_code=STATE_WARNING; + return_code = STATE_WARNING; else - return_code=STATE_OK; + return_code = STATE_OK; } break; case CHECK_USEDDISKSPACE: - if (value_list==NULL) - output_message = strdup (_("missing -l parameters")); - else if (strlen(value_list)!=1) - output_message = strdup (_("wrong -l argument")); + if (value_list == NULL) + output_message = strdup(_("missing -l parameters")); + else if (strlen(value_list) != 1) + output_message = strdup(_("wrong -l argument")); else { - xasprintf(&send_buffer,"%s&4&%s", req_password, value_list); - fetch_data (server_address, server_port, send_buffer); - fds=strtok(recv_buffer,"&"); - tds=strtok(NULL,"&"); - if(fds!=NULL) - free_disk_space=atof(fds); - if(tds!=NULL) - total_disk_space=atof(tds); - - if (total_disk_space>0 && free_disk_space>=0) { + xasprintf(&send_buffer, "%s&4&%s", req_password, value_list); + fetch_data(server_address, server_port, send_buffer); + fds = strtok(recv_buffer, "&"); + tds = strtok(NULL, "&"); + if (fds != NULL) + free_disk_space = atof(fds); + if (tds != NULL) + total_disk_space = atof(tds); + + if (total_disk_space > 0 && free_disk_space >= 0) { percent_used_space = ((total_disk_space - free_disk_space) / total_disk_space) * 100; warning_used_space = ((float)warning_value / 100) * total_disk_space; critical_used_space = ((float)critical_value / 100) * total_disk_space; - xasprintf(&temp_string,_("%s:\\ - total: %.2f Gb - used: %.2f Gb (%.0f%%) - free %.2f Gb (%.0f%%)"), - value_list, total_disk_space / 1073741824, (total_disk_space - free_disk_space) / 1073741824, - percent_used_space, free_disk_space / 1073741824, (free_disk_space / total_disk_space)*100); - xasprintf(&temp_string_perf,_("'%s:\\ Used Space'=%.2fGb;%.2f;%.2f;0.00;%.2f"), value_list, - (total_disk_space - free_disk_space) / 1073741824, warning_used_space / 1073741824, - critical_used_space / 1073741824, total_disk_space / 1073741824); + xasprintf(&temp_string, _("%s:\\ - total: %.2f Gb - used: %.2f Gb (%.0f%%) - free %.2f Gb (%.0f%%)"), value_list, + total_disk_space / 1073741824, (total_disk_space - free_disk_space) / 1073741824, percent_used_space, + free_disk_space / 1073741824, (free_disk_space / total_disk_space) * 100); + xasprintf(&temp_string_perf, _("'%s:\\ Used Space'=%.2fGb;%.2f;%.2f;0.00;%.2f"), value_list, + (total_disk_space - free_disk_space) / 1073741824, warning_used_space / 1073741824, + critical_used_space / 1073741824, total_disk_space / 1073741824); - if(check_critical_value && percent_used_space >= critical_value) - return_code=STATE_CRITICAL; + if (check_critical_value && percent_used_space >= critical_value) + return_code = STATE_CRITICAL; else if (check_warning_value && percent_used_space >= warning_value) - return_code=STATE_WARNING; + return_code = STATE_WARNING; else - return_code=STATE_OK; + return_code = STATE_OK; - output_message = strdup (temp_string); + output_message = strdup(temp_string); perfdata = temp_string_perf; } else { - output_message = strdup (_("Free disk space : Invalid drive")); - return_code=STATE_UNKNOWN; + output_message = strdup(_("Free disk space : Invalid drive")); + return_code = STATE_UNKNOWN; } } break; @@ -280,57 +276,56 @@ int main(int argc, char **argv){ case CHECK_SERVICESTATE: case CHECK_PROCSTATE: - if (value_list==NULL) - output_message = strdup (_("No service/process specified")); + if (value_list == NULL) + output_message = strdup(_("No service/process specified")); else { - preparelist(value_list); /* replace , between services with & to send the request */ - xasprintf(&send_buffer,"%s&%u&%s&%s", req_password,(vars_to_check==CHECK_SERVICESTATE)?5:6, - (show_all) ? "ShowAll" : "ShowFail",value_list); - fetch_data (server_address, server_port, send_buffer); - numstr = strtok(recv_buffer,"&"); + preparelist(value_list); /* replace , between services with & to send the request */ + xasprintf(&send_buffer, "%s&%u&%s&%s", req_password, (vars_to_check == CHECK_SERVICESTATE) ? 5 : 6, + (show_all) ? "ShowAll" : "ShowFail", value_list); + fetch_data(server_address, server_port, send_buffer); + numstr = strtok(recv_buffer, "&"); if (numstr == NULL) die(STATE_UNKNOWN, _("could not fetch information from server\n")); - return_code=atoi(numstr); - temp_string=strtok(NULL,"&"); - output_message = strdup (temp_string); + return_code = atoi(numstr); + temp_string = strtok(NULL, "&"); + output_message = strdup(temp_string); } break; case CHECK_MEMUSE: - xasprintf(&send_buffer,"%s&7", req_password); - fetch_data (server_address, server_port, send_buffer); - numstr = strtok(recv_buffer,"&"); + xasprintf(&send_buffer, "%s&7", req_password); + fetch_data(server_address, server_port, send_buffer); + numstr = strtok(recv_buffer, "&"); if (numstr == NULL) die(STATE_UNKNOWN, _("could not fetch information from server\n")); - mem_commitLimit=atof(numstr); - numstr = strtok(NULL,"&"); + mem_commitLimit = atof(numstr); + numstr = strtok(NULL, "&"); if (numstr == NULL) die(STATE_UNKNOWN, _("could not fetch information from server\n")); - mem_commitByte=atof(numstr); + mem_commitByte = atof(numstr); percent_used_space = (mem_commitByte / mem_commitLimit) * 100; warning_used_space = ((float)warning_value / 100) * mem_commitLimit; critical_used_space = ((float)critical_value / 100) * mem_commitLimit; /* Divisor should be 1048567, not 3044515, as we are measuring "Commit Charge" here, which equals RAM + Pagefiles. */ - xasprintf(&output_message,_("Memory usage: total:%.2f MB - used: %.2f MB (%.0f%%) - free: %.2f MB (%.0f%%)"), - mem_commitLimit / 1048567, mem_commitByte / 1048567, percent_used_space, - (mem_commitLimit - mem_commitByte) / 1048567, (mem_commitLimit - mem_commitByte) / mem_commitLimit * 100); - xasprintf(&perfdata,_("'Memory usage'=%.2fMB;%.2f;%.2f;0.00;%.2f"), mem_commitByte / 1048567, - warning_used_space / 1048567, critical_used_space / 1048567, mem_commitLimit / 1048567); - - return_code=STATE_OK; - if(check_critical_value && percent_used_space >= critical_value) - return_code=STATE_CRITICAL; + xasprintf(&output_message, _("Memory usage: total:%.2f MB - used: %.2f MB (%.0f%%) - free: %.2f MB (%.0f%%)"), + mem_commitLimit / 1048567, mem_commitByte / 1048567, percent_used_space, (mem_commitLimit - mem_commitByte) / 1048567, + (mem_commitLimit - mem_commitByte) / mem_commitLimit * 100); + xasprintf(&perfdata, _("'Memory usage'=%.2fMB;%.2f;%.2f;0.00;%.2f"), mem_commitByte / 1048567, warning_used_space / 1048567, + critical_used_space / 1048567, mem_commitLimit / 1048567); + + return_code = STATE_OK; + if (check_critical_value && percent_used_space >= critical_value) + return_code = STATE_CRITICAL; else if (check_warning_value && percent_used_space >= warning_value) - return_code=STATE_WARNING; + return_code = STATE_WARNING; break; case CHECK_COUNTER: - /* CHECK_COUNTER has been modified to provide extensive perfdata information. In order to do this, some modifications have been done to the code @@ -353,311 +348,290 @@ int main(int argc, char **argv){ */ if (value_list == NULL) - output_message = strdup (_("No counter specified")); - else - { - preparelist (value_list); /* replace , between services with & to send the request */ - isPercent = (strchr (value_list, '%') != NULL); - - strtok (value_list, "&"); /* burn the first parameters */ - description = strtok (NULL, "&"); - counter_unit = strtok (NULL, "&"); - xasprintf (&send_buffer, "%s&8&%s", req_password, value_list); - fetch_data (server_address, server_port, send_buffer); - counter_value = atof (recv_buffer); + output_message = strdup(_("No counter specified")); + else { + preparelist(value_list); /* replace , between services with & to send the request */ + isPercent = (strchr(value_list, '%') != NULL); + + strtok(value_list, "&"); /* burn the first parameters */ + description = strtok(NULL, "&"); + counter_unit = strtok(NULL, "&"); + xasprintf(&send_buffer, "%s&8&%s", req_password, value_list); + fetch_data(server_address, server_port, send_buffer); + counter_value = atof(recv_buffer); if (description == NULL) - xasprintf (&output_message, "%.f", counter_value); - else if (isPercent) - { - counter_unit = strdup ("%"); + xasprintf(&output_message, "%.f", counter_value); + else if (isPercent) { + counter_unit = strdup("%"); allRight = true; } - if ((counter_unit != NULL) && (!allRight)) - { - minval = strtok (NULL, "&"); - maxval = strtok (NULL, "&"); + if ((counter_unit != NULL) && (!allRight)) { + minval = strtok(NULL, "&"); + maxval = strtok(NULL, "&"); /* All parameters specified. Let's check the numbers */ - fminval = (minval != NULL) ? strtod (minval, &errcvt) : -1; - fmaxval = (minval != NULL) ? strtod (maxval, &errcvt) : -1; + fminval = (minval != NULL) ? strtod(minval, &errcvt) : -1; + fmaxval = (minval != NULL) ? strtod(maxval, &errcvt) : -1; if ((fminval == 0) && (minval == errcvt)) - output_message = strdup (_("Minimum value contains non-numbers")); - else - { + output_message = strdup(_("Minimum value contains non-numbers")); + else { if ((fmaxval == 0) && (maxval == errcvt)) - output_message = strdup (_("Maximum value contains non-numbers")); + output_message = strdup(_("Maximum value contains non-numbers")); else - allRight = true; /* Everything is OK. */ - + allRight = true; /* Everything is OK. */ } - } - else if ((counter_unit == NULL) && (description != NULL)) - output_message = strdup (_("No unit counter specified")); + } else if ((counter_unit == NULL) && (description != NULL)) + output_message = strdup(_("No unit counter specified")); - if (allRight) - { + if (allRight) { /* Let's format the output string, finally... */ - if (strstr(description, "%") == NULL) { - xasprintf (&output_message, "%s = %.2f %s", description, counter_value, counter_unit); - } else { - /* has formatting, will segv if wrong */ - xasprintf (&output_message, description, counter_value); - } - xasprintf (&output_message, "%s |", output_message); - xasprintf (&output_message,"%s %s", output_message, - fperfdata (description, counter_value, - counter_unit, 1, warning_value, 1, critical_value, - (!(isPercent) && (minval != NULL)), fminval, - (!(isPercent) && (minval != NULL)), fmaxval)); + if (strstr(description, "%") == NULL) { + xasprintf(&output_message, "%s = %.2f %s", description, counter_value, counter_unit); + } else { + /* has formatting, will segv if wrong */ + xasprintf(&output_message, description, counter_value); + } + xasprintf(&output_message, "%s |", output_message); + xasprintf(&output_message, "%s %s", output_message, + fperfdata(description, counter_value, counter_unit, 1, warning_value, 1, critical_value, + (!(isPercent) && (minval != NULL)), fminval, (!(isPercent) && (minval != NULL)), fmaxval)); } } - if (critical_value > warning_value) - { /* Normal thresholds */ + if (critical_value > warning_value) { /* Normal thresholds */ if (check_critical_value && counter_value >= critical_value) return_code = STATE_CRITICAL; - else if (check_warning_value && counter_value >= warning_value) + else if (check_warning_value && counter_value >= warning_value) return_code = STATE_WARNING; else return_code = STATE_OK; - } - else - { /* inverse thresholds */ + } else { /* inverse thresholds */ return_code = STATE_OK; if (check_critical_value && counter_value <= critical_value) return_code = STATE_CRITICAL; else if (check_warning_value && counter_value <= warning_value) return_code = STATE_WARNING; } - break; + break; case CHECK_FILEAGE: - if (value_list==NULL) - output_message = strdup (_("No counter specified")); + if (value_list == NULL) + output_message = strdup(_("No counter specified")); else { - preparelist(value_list); /* replace , between services with & to send the request */ - xasprintf(&send_buffer,"%s&9&%s", req_password,value_list); - fetch_data (server_address, server_port, send_buffer); - age_in_minutes = atoi(strtok(recv_buffer,"&")); - description = strtok(NULL,"&"); - output_message = strdup (description); - - if (critical_value > warning_value) { /* Normal thresholds */ - if(check_critical_value && age_in_minutes >= critical_value) - return_code=STATE_CRITICAL; + preparelist(value_list); /* replace , between services with & to send the request */ + xasprintf(&send_buffer, "%s&9&%s", req_password, value_list); + fetch_data(server_address, server_port, send_buffer); + age_in_minutes = atoi(strtok(recv_buffer, "&")); + description = strtok(NULL, "&"); + output_message = strdup(description); + + if (critical_value > warning_value) { /* Normal thresholds */ + if (check_critical_value && age_in_minutes >= critical_value) + return_code = STATE_CRITICAL; else if (check_warning_value && age_in_minutes >= warning_value) - return_code=STATE_WARNING; + return_code = STATE_WARNING; else - return_code=STATE_OK; - } - else { /* inverse thresholds */ - if(check_critical_value && age_in_minutes <= critical_value) - return_code=STATE_CRITICAL; + return_code = STATE_OK; + } else { /* inverse thresholds */ + if (check_critical_value && age_in_minutes <= critical_value) + return_code = STATE_CRITICAL; else if (check_warning_value && age_in_minutes <= warning_value) - return_code=STATE_WARNING; + return_code = STATE_WARNING; else - return_code=STATE_OK; + return_code = STATE_OK; } } break; case CHECK_INSTANCES: - if (value_list==NULL) - output_message = strdup (_("No counter specified")); + if (value_list == NULL) + output_message = strdup(_("No counter specified")); else { - xasprintf(&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); + xasprintf(&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); } - xasprintf(&output_message,"%s",recv_buffer); - return_code=STATE_OK; + xasprintf(&output_message, "%s", recv_buffer); + return_code = STATE_OK; } break; case CHECK_NONE: default: - usage4 (_("Please specify a variable to check")); + usage4(_("Please specify a variable to check")); break; - } /* reset timeout */ alarm(0); - if (perfdata==NULL) - printf("%s\n",output_message); + if (perfdata == NULL) + printf("%s\n", output_message); else - printf("%s | %s\n",output_message,perfdata); + printf("%s | %s\n", output_message, perfdata); return return_code; } - - /* process command-line arguments */ -int process_arguments(int argc, char **argv){ +int process_arguments(int argc, char **argv) { int c; int option = 0; - static struct option longopts[] = - { - {"port", required_argument,0,'p'}, - {"timeout", required_argument,0,'t'}, - {"critical", required_argument,0,'c'}, - {"warning", required_argument,0,'w'}, - {"variable", required_argument,0,'v'}, - {"hostname", required_argument,0,'H'}, - {"params", required_argument,0,'l'}, - {"secret", required_argument,0,'s'}, - {"display", required_argument,0,'d'}, - {"unknown-timeout", no_argument, 0, 'u'}, - {"version", no_argument, 0,'V'}, - {"help", no_argument, 0,'h'}, - {0,0,0,0} - }; + static struct option longopts[] = {{"port", required_argument, 0, 'p'}, + {"timeout", required_argument, 0, 't'}, + {"critical", required_argument, 0, 'c'}, + {"warning", required_argument, 0, 'w'}, + {"variable", required_argument, 0, 'v'}, + {"hostname", required_argument, 0, 'H'}, + {"params", required_argument, 0, 'l'}, + {"secret", required_argument, 0, 's'}, + {"display", required_argument, 0, 'd'}, + {"unknown-timeout", no_argument, 0, 'u'}, + {"version", no_argument, 0, 'V'}, + {"help", no_argument, 0, 'h'}, + {0, 0, 0, 0}}; /* no options were supplied */ - if(argc<2) return ERROR; + if (argc < 2) + return ERROR; /* backwards compatibility */ - if (! is_option(argv[1])) { + if (!is_option(argv[1])) { server_address = strdup(argv[1]); - argv[1]=argv[0]; - argv=&argv[1]; + argv[1] = argv[0]; + argv = &argv[1]; argc--; } - for (c=1;c delimited string into a long array */ - int idx=0; + int idx = 0; char *t1; - for (idx=0;idx"); - printf (" %s\n", _("Password needed for the request")); - printf (" %s\n", "-w, --warning=INTEGER"); - printf (" %s\n", _("Threshold which will result in a warning status")); - printf (" %s\n", "-c, --critical=INTEGER"); - printf (" %s\n", _("Threshold which will result in a critical status")); - printf (" %s\n", "-t, --timeout=INTEGER"); - printf (" %s", _("Seconds before connection attempt times out (default: ")); - printf (" %s\n", "-l, --params="); - printf (" %s", _("Parameters passed to specified check (see below)")); - printf (" %s\n", "-d, --display={SHOWALL}"); - printf (" %s", _("Display options (currently only SHOWALL works)")); - printf (" %s\n", "-u, --unknown-timeout"); - printf (" %s", _("Return UNKNOWN on timeouts")); - printf ("%d)\n", DEFAULT_SOCKET_TIMEOUT); - printf (" %s\n", "-h, --help"); - printf (" %s\n", _("Print this help screen")); - printf (" %s\n", "-V, --version"); - printf (" %s\n", _("Print version information")); - printf (" %s\n", "-v, --variable=STRING"); - printf (" %s\n\n", _("Variable to check")); - printf ("%s\n", _("Valid variables are:")); - printf (" %s", "CLIENTVERSION ="); - printf (" %s\n", _("Get the NSClient version")); - printf (" %s\n", _("If -l is specified, will return warning if versions differ.")); - printf (" %s\n", "CPULOAD ="); - printf (" %s\n", _("Average CPU load on last x minutes.")); - printf (" %s\n", _("Request a -l parameter with the following syntax:")); - printf (" %s\n", _("-l ,,.")); - printf (" %s\n", _(" should be less than 24*60.")); - printf (" %s\n", _("Thresholds are percentage and up to 10 requests can be done in one shot.")); - printf (" %s\n", "ie: -l 60,90,95,120,90,95"); - printf (" %s\n", "UPTIME ="); - printf (" %s\n", _("Get the uptime of the machine.")); - printf (" %s\n", _("-l ")); - printf (" %s\n", _(" = seconds, minutes, hours, or days. (default: minutes)")); - printf (" %s\n", _("Thresholds will use the unit specified above.")); - printf (" %s\n", "USEDDISKSPACE ="); - printf (" %s\n", _("Size and percentage of disk use.")); - printf (" %s\n", _("Request a -l parameter containing the drive letter only.")); - printf (" %s\n", _("Warning and critical thresholds can be specified with -w and -c.")); - 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", _("Check the state of one or several services.")); - printf (" %s\n", _("Request a -l parameters with the following syntax:")); - printf (" %s\n", _("-l ,,,...")); - printf (" %s\n", _("You can specify -d SHOWALL in case you want to see working services")); - printf (" %s\n", _("in the returned string.")); - printf (" %s\n", "PROCSTATE ="); - printf (" %s\n", _("Check if one or several process are running.")); - printf (" %s\n", _("Same syntax as SERVICESTATE.")); - printf (" %s\n", "COUNTER ="); - printf (" %s\n", _("Check any performance counter of Windows NT/2000.")); - printf (" %s\n", _("Request a -l parameters with the following syntax:")); - 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", _("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", "\"%%.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 the monitoring 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 ("%s\n", _("Notes:")); - printf (" %s\n", _("- The NSClient service should be running on the server to get any information")); - printf (" %s\n", "(http://nsclient.ready2run.nl)."); - printf (" %s\n", _("- Critical thresholds should be lower than warning thresholds")); - printf (" %s\n", _("- Default port 1248 is sometimes in use by other services. The error")); - printf (" %s\n", _("output when this happens contains \"Cannot map xxxxx to protocol number\".")); - printf (" %s\n", _("One fix for this is to change the port to something else on check_nt ")); - printf (" %s\n", _("and on the client service it\'s connecting to.")); - - printf (UT_SUPPORT); + printf(UT_HELP_VRSN); + printf(UT_EXTRA_OPTS); + + printf("%s\n", _("Options:")); + printf(" %s\n", "-H, --hostname=HOST"); + printf(" %s\n", _("Name of the host to check")); + printf(" %s\n", "-p, --port=INTEGER"); + printf(" %s", _("Optional port number (default: ")); + printf("%d)\n", PORT); + printf(" %s\n", "-s, --secret="); + printf(" %s\n", _("Password needed for the request")); + printf(" %s\n", "-w, --warning=INTEGER"); + printf(" %s\n", _("Threshold which will result in a warning status")); + printf(" %s\n", "-c, --critical=INTEGER"); + printf(" %s\n", _("Threshold which will result in a critical status")); + printf(" %s\n", "-t, --timeout=INTEGER"); + printf(" %s", _("Seconds before connection attempt times out (default: ")); + printf(" %s\n", "-l, --params="); + printf(" %s", _("Parameters passed to specified check (see below)")); + printf(" %s\n", "-d, --display={SHOWALL}"); + printf(" %s", _("Display options (currently only SHOWALL works)")); + printf(" %s\n", "-u, --unknown-timeout"); + printf(" %s", _("Return UNKNOWN on timeouts")); + printf("%d)\n", DEFAULT_SOCKET_TIMEOUT); + printf(" %s\n", "-h, --help"); + printf(" %s\n", _("Print this help screen")); + printf(" %s\n", "-V, --version"); + printf(" %s\n", _("Print version information")); + printf(" %s\n", "-v, --variable=STRING"); + printf(" %s\n\n", _("Variable to check")); + printf("%s\n", _("Valid variables are:")); + printf(" %s", "CLIENTVERSION ="); + printf(" %s\n", _("Get the NSClient version")); + printf(" %s\n", _("If -l is specified, will return warning if versions differ.")); + printf(" %s\n", "CPULOAD ="); + printf(" %s\n", _("Average CPU load on last x minutes.")); + printf(" %s\n", _("Request a -l parameter with the following syntax:")); + printf(" %s\n", _("-l ,,.")); + printf(" %s\n", _(" should be less than 24*60.")); + printf(" %s\n", _("Thresholds are percentage and up to 10 requests can be done in one shot.")); + printf(" %s\n", "ie: -l 60,90,95,120,90,95"); + printf(" %s\n", "UPTIME ="); + printf(" %s\n", _("Get the uptime of the machine.")); + printf(" %s\n", _("-l ")); + printf(" %s\n", _(" = seconds, minutes, hours, or days. (default: minutes)")); + printf(" %s\n", _("Thresholds will use the unit specified above.")); + printf(" %s\n", "USEDDISKSPACE ="); + printf(" %s\n", _("Size and percentage of disk use.")); + printf(" %s\n", _("Request a -l parameter containing the drive letter only.")); + printf(" %s\n", _("Warning and critical thresholds can be specified with -w and -c.")); + 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", _("Check the state of one or several services.")); + printf(" %s\n", _("Request a -l parameters with the following syntax:")); + printf(" %s\n", _("-l ,,,...")); + printf(" %s\n", _("You can specify -d SHOWALL in case you want to see working services")); + printf(" %s\n", _("in the returned string.")); + printf(" %s\n", "PROCSTATE ="); + printf(" %s\n", _("Check if one or several process are running.")); + printf(" %s\n", _("Same syntax as SERVICESTATE.")); + printf(" %s\n", "COUNTER ="); + printf(" %s\n", _("Check any performance counter of Windows NT/2000.")); + printf(" %s\n", _("Request a -l parameters with the following syntax:")); + 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", _("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", "\"%%.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 the monitoring 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("%s\n", _("Notes:")); + printf(" %s\n", _("- The NSClient service should be running on the server to get any information")); + printf(" %s\n", "(http://nsclient.ready2run.nl)."); + printf(" %s\n", _("- Critical thresholds should be lower than warning thresholds")); + printf(" %s\n", _("- Default port 1248 is sometimes in use by other services. The error")); + printf(" %s\n", _("output when this happens contains \"Cannot map xxxxx to protocol number\".")); + printf(" %s\n", _("One fix for this is to change the port to something else on check_nt ")); + printf(" %s\n", _("and on the client service it\'s connecting to.")); + + printf(UT_SUPPORT); } - - -void print_usage(void) -{ - printf ("%s\n", _("Usage:")); - printf ("%s -H host -v variable [-p port] [-w warning] [-c critical]\n",progname); - printf ("[-l params] [-d SHOWALL] [-u] [-t timeout]\n"); +void print_usage(void) { + printf("%s\n", _("Usage:")); + printf("%s -H host -v variable [-p port] [-w warning] [-c critical]\n", progname); + printf("[-l params] [-d SHOWALL] [-u] [-t timeout]\n"); } - -- cgit v0.10-9-g596f