Module: monitoring-plugins
    Branch: master
    Commit: 30a9908d8d02fe7ffc813adfe80e24663dcee654
    Author: Lorenz Kästle <[email protected]>
 Committer: GitHub <[email protected]>
      Date: Wed Dec  3 22:39:19 2025 +0100
       URL: 
https://www.monitoring-plugins.org/repositories/monitoring-plugins/commit/?id=30a9908d

Remove check_nt (#2195)

check_nt was used to connect NSclient++ on windows, both the method
and the target are pretty much dead.
Therefor check_nt gets removed.

---

 .github/monitoring-plugins.spec |  13 -
 .gitignore                      |   1 -
 REQUIREMENTS                    |   8 +-
 configure.ac                    |   5 -
 plugins/Makefile.am             |   4 +-
 plugins/check_nt.c              | 789 ----------------------------------------
 plugins/check_nt.d/config.h     |  53 ---
 plugins/tests/check_nt.t        |  80 ----
 8 files changed, 3 insertions(+), 950 deletions(-)

diff --git a/.github/monitoring-plugins.spec b/.github/monitoring-plugins.spec
index ce22606b..5878a862 100644
--- a/.github/monitoring-plugins.spec
+++ b/.github/monitoring-plugins.spec
@@ -652,19 +652,6 @@ Provides check_nagios of the Monitoring Plugins.
 
 
 
-# check_nt
-%package nt
-Summary:  Monitoring Plugins - check_nt
-Requires: %{name} = %{version}-%{release}
-
-%description nt
-Provides check_nt of the Monitoring Plugins.
-
-%files nt
-%{plugindir}/check_nt
-
-
-
 # check_ntp
 %package ntp
 Summary:  Monitoring Plugins - check_ntp
diff --git a/.gitignore b/.gitignore
index 00e19d52..a91edd7c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -174,7 +174,6 @@ plugins/check_disk.d/.dirstamp
 /plugins/check_netsaint
 /plugins/check_nntp
 /plugins/check_nntps
-/plugins/check_nt
 /plugins/check_ntp
 /plugins/check_ntp_peer
 /plugins/check_ntp_time
diff --git a/REQUIREMENTS b/REQUIREMENTS
index 551fdb1a..8f1befbd 100644
--- a/REQUIREMENTS
+++ b/REQUIREMENTS
@@ -26,7 +26,7 @@ check_curl:
          other SSL implementations are currently not supported
        - uriparser 0.7.5 or later
          https://uriparser.github.io/
-      
+
 check_fping:
        - Requires the fping utility distributed with SATAN.  Either
          download and install SATAN or grab the fping program from
@@ -87,16 +87,12 @@ check_ifstatus/check_ifoperstatus
        - Requires Net::SNMP perl module
          http://www.perl.com/CPAN/modules/by-authors/id/D/DT/DTOWN/
 
-check_nt:
-       - Requires NSClient to run on the NT server to monitor
-         http://nsclient.ready2run.nl/
-
 check_ups:
        - Requires Network UPS Tools (>= 1.4) to run on the server to monitor
          http://www.networkupstools.org/
 
 check_ide_smart:
-       - Uses the Linux specific SMART interface 
[http://smartlinux.sourceforge.net/smart/index.php]. 
+       - Uses the Linux specific SMART interface 
[http://smartlinux.sourceforge.net/smart/index.php].
 
 OS Specific Issues
 ------------------
diff --git a/configure.ac b/configure.ac
index 705183a2..2bf94014 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1832,11 +1832,6 @@ if test -n "$PATH_TO_APTGET" ; then
 fi
 
 
-if test -f $srcdir/plugins/check_nt.c ; then
-  EXTRAS="$EXTRAS check_nt\$(EXEEXT)"
-fi
-
-
 dnl used in check_dhcp
 AC_CHECK_HEADERS(sys/sockio.h)
 
diff --git a/plugins/Makefile.am b/plugins/Makefile.am
index 1a9399f0..877c0947 100644
--- a/plugins/Makefile.am
+++ b/plugins/Makefile.am
@@ -44,7 +44,7 @@ check_tcp_programs = check_ftp check_imap check_nntp 
check_pop \
 
 EXTRA_PROGRAMS = check_mysql check_radius check_pgsql check_hpjd \
        check_swap check_fping check_ldap check_game check_dig \
-       check_nagios check_by_ssh check_dns check_nt check_ide_smart    \
+       check_nagios check_by_ssh check_dns check_ide_smart     \
        check_procs check_mysql_query check_apt check_dbi check_curl \
        \
        tests/test_check_swap \
@@ -76,7 +76,6 @@ EXTRA_DIST = t \
                         check_tcp.d \
                         check_real.d \
                         check_ssh.d \
-                        check_nt.d \
                         check_dns.d \
                         check_mrtgtraf.d \
                         check_mysql_query.d \
@@ -157,7 +156,6 @@ check_mysql_query_CFLAGS = $(AM_CFLAGS) $(MYSQLCFLAGS)
 check_mysql_query_CPPFLAGS = $(AM_CPPFLAGS) $(MYSQLINCLUDE)
 check_mysql_query_LDADD = $(NETLIBS) $(MYSQLLIBS)
 check_nagios_LDADD = $(BASEOBJS)
-check_nt_LDADD = $(NETLIBS)
 check_ntp_LDADD = $(NETLIBS) $(MATHLIBS)
 check_ntp_peer_LDADD = $(NETLIBS) $(MATHLIBS)
 check_pgsql_LDADD = $(NETLIBS) $(PGLIBS)
diff --git a/plugins/check_nt.c b/plugins/check_nt.c
deleted file mode 100644
index 35ca92cd..00000000
--- a/plugins/check_nt.c
+++ /dev/null
@@ -1,789 +0,0 @@
-/*****************************************************************************
- *
- * Monitoring check_nt plugin
- *
- * License: GPL
- * Copyright (c) 2000-2002 Yves Rubin ([email protected])
- * Copyright (c) 2003-2024 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
- * (https://nsclient.org/)
- *
- *
- * 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 <http://www.gnu.org/licenses/>.
- *
- *
- *****************************************************************************/
-
-const char *progname = "check_nt";
-const char *copyright = "2000-2024";
-const char *email = "[email protected]";
-
-#include "common.h"
-#include "netutils.h"
-#include "utils.h"
-#include "check_nt.d/config.h"
-
-enum {
-       MAX_VALUE_LIST = 30,
-};
-
-static char recv_buffer[MAX_INPUT_BUFFER];
-
-static void fetch_data(const char *address, int port, const char *sendb);
-
-typedef struct {
-       int errorcode;
-       check_nt_config config;
-} check_nt_config_wrapper;
-static check_nt_config_wrapper process_arguments(int /*argc*/, char ** 
/*argv*/);
-
-static void preparelist(char *string);
-static bool strtoularray(unsigned long *array, char *string, const char 
*delim);
-static void print_help(void);
-void print_usage(void);
-
-int main(int argc, char **argv) {
-       setlocale(LC_ALL, "");
-       bindtextdomain(PACKAGE, LOCALEDIR);
-       textdomain(PACKAGE);
-
-       /* Parse extra opts if any */
-       argv = np_extra_opts(&argc, argv, progname);
-
-       check_nt_config_wrapper tmp_config = process_arguments(argc, argv);
-       if (tmp_config.errorcode == ERROR) {
-               usage4(_("Could not parse arguments"));
-       }
-
-       const check_nt_config config = tmp_config.config;
-
-       /* initialize alarm signal handling */
-       signal(SIGALRM, socket_timeout_alarm_handler);
-
-       /* set socket timeout */
-       alarm(socket_timeout);
-
-       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;
-       char *counter_unit = NULL;
-       char *errcvt = NULL;
-       unsigned long lvalue_list[MAX_VALUE_LIST];
-       switch (config.vars_to_check) {
-       case CHECK_CLIENTVERSION:
-               xasprintf(&send_buffer, "%s&1", config.req_password);
-               fetch_data(config.server_address, config.server_port, 
send_buffer);
-               if (config.value_list != NULL && strcmp(recv_buffer, 
config.value_list) != 0) {
-                       xasprintf(&output_message, _("Wrong client version - 
running: %s, required: %s"),
-                                         recv_buffer, config.value_list);
-                       return_code = STATE_WARNING;
-               } else {
-                       xasprintf(&output_message, "%s", recv_buffer);
-                       return_code = STATE_OK;
-               }
-               break;
-       case CHECK_CPULOAD:
-               if (config.value_list == NULL) {
-                       output_message = strdup(_("missing -l parameters"));
-               } else if (!strtoularray(lvalue_list, config.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(" ");
-
-                       /* loop until one of the parameters is wrong or not 
present */
-                       int offset = 0;
-                       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", 
config.req_password, lvalue_list[0 + offset]);
-                               fetch_data(config.server_address, 
config.server_port, send_buffer);
-
-                               unsigned long 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 < 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);
-                               perfdata = temp_string_perf;
-                       } else {
-                               output_message = strdup(_("not enough values 
for -l parameters"));
-                       }
-               }
-               break;
-       case CHECK_UPTIME: {
-               char *tmp_value_list = config.value_list;
-               if (config.value_list == NULL) {
-                       tmp_value_list = "minutes";
-               }
-               if (strncmp(tmp_value_list, "seconds", strlen("seconds") + 1) &&
-                       strncmp(tmp_value_list, "minutes", strlen("minutes") + 
1) &&
-                       strncmp(config.value_list, "hours", strlen("hours") + 
1) &&
-                       strncmp(tmp_value_list, "days", strlen("days") + 1)) {
-
-                       output_message = strdup(_("wrong -l argument"));
-               } else {
-                       xasprintf(&send_buffer, "%s&3", config.req_password);
-                       fetch_data(config.server_address, config.server_port, 
send_buffer);
-                       unsigned long uptime = strtoul(recv_buffer, NULL, 10);
-                       int updays = uptime / 86400;
-                       int uphours = (uptime % 86400) / 3600;
-                       int upminutes = ((uptime % 86400) % 3600) / 60;
-
-                       if (!strncmp(tmp_value_list, "minutes", 
strlen("minutes"))) {
-                               uptime = uptime / 60;
-                       } else if (!strncmp(tmp_value_list, "hours", 
strlen("hours"))) {
-                               uptime = uptime / 3600;
-                       } else if (!strncmp(tmp_value_list, "days", 
strlen("days"))) {
-                               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);
-
-                       if (config.check_critical_value && uptime <= 
config.critical_value) {
-                               return_code = STATE_CRITICAL;
-                       } else if (config.check_warning_value && uptime <= 
config.warning_value) {
-                               return_code = STATE_WARNING;
-                       } else {
-                               return_code = STATE_OK;
-                       }
-               }
-       } break;
-       case CHECK_USEDDISKSPACE:
-               if (config.value_list == NULL) {
-                       output_message = strdup(_("missing -l parameters"));
-               } else if (strlen(config.value_list) != 1) {
-                       output_message = strdup(_("wrong -l argument"));
-               } else {
-                       xasprintf(&send_buffer, "%s&4&%s", config.req_password, 
config.value_list);
-                       fetch_data(config.server_address, config.server_port, 
send_buffer);
-                       char *fds = strtok(recv_buffer, "&");
-                       char *tds = strtok(NULL, "&");
-                       double total_disk_space = 0;
-                       double free_disk_space = 0;
-                       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) {
-                               double percent_used_space =
-                                       ((total_disk_space - free_disk_space) / 
total_disk_space) * 100;
-                               double warning_used_space = 
((float)config.warning_value / 100) * total_disk_space;
-                               double critical_used_space =
-                                       ((float)config.critical_value / 100) * 
total_disk_space;
-
-                               xasprintf(
-                                       &temp_string,
-                                       _("%s:\\ - total: %.2f Gb - used: %.2f 
Gb (%.0f%%) - free %.2f Gb (%.0f%%)"),
-                                       config.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"),
-                                                 config.value_list, 
(total_disk_space - free_disk_space) / 1073741824,
-                                                 warning_used_space / 
1073741824, critical_used_space / 1073741824,
-                                                 total_disk_space / 
1073741824);
-
-                               if (config.check_critical_value && 
percent_used_space >= config.critical_value) {
-                                       return_code = STATE_CRITICAL;
-                               } else if (config.check_warning_value &&
-                                                  percent_used_space >= 
config.warning_value) {
-                                       return_code = STATE_WARNING;
-                               } else {
-                                       return_code = STATE_OK;
-                               }
-
-                               output_message = strdup(temp_string);
-                               perfdata = temp_string_perf;
-                       } else {
-                               output_message = strdup(_("Free disk space : 
Invalid drive"));
-                               return_code = STATE_UNKNOWN;
-                       }
-               }
-               break;
-       case CHECK_SERVICESTATE:
-       case CHECK_PROCSTATE:
-               if (config.value_list == NULL) {
-                       output_message = strdup(_("No service/process 
specified"));
-               } else {
-                       preparelist(
-                               config.value_list); /* replace , between 
services with & to send the request */
-                       xasprintf(&send_buffer, "%s&%u&%s&%s", 
config.req_password,
-                                         (config.vars_to_check == 
CHECK_SERVICESTATE) ? 5 : 6,
-                                         (config.show_all) ? "ShowAll" : 
"ShowFail", config.value_list);
-                       fetch_data(config.server_address, config.server_port, 
send_buffer);
-                       char *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);
-               }
-               break;
-       case CHECK_MEMUSE:
-               xasprintf(&send_buffer, "%s&7", config.req_password);
-               fetch_data(config.server_address, config.server_port, 
send_buffer);
-               char *numstr = strtok(recv_buffer, "&");
-               if (numstr == NULL) {
-                       die(STATE_UNKNOWN, _("could not fetch information from 
server\n"));
-               }
-               double mem_commitLimit = atof(numstr);
-               numstr = strtok(NULL, "&");
-               if (numstr == NULL) {
-                       die(STATE_UNKNOWN, _("could not fetch information from 
server\n"));
-               }
-               double mem_commitByte = atof(numstr);
-               double percent_used_space = (mem_commitByte / mem_commitLimit) 
* 100;
-               double warning_used_space = ((float)config.warning_value / 100) 
* mem_commitLimit;
-               double critical_used_space = ((float)config.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 (config.check_critical_value && percent_used_space >= 
config.critical_value) {
-                       return_code = STATE_CRITICAL;
-               } else if (config.check_warning_value && percent_used_space >= 
config.warning_value) {
-                       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
-               and some constraints have been introduced.
-
-               1) For the sake of simplicity of the code, perfdata information 
will only be
-                provided when the "description" field is added.
-
-               2) If the counter you're going to measure is percent-based, the 
code will detect
-                the percent sign in its name and will attribute minimum (0%) 
and maximum (100%)
-                values automagically, as well the "%" sign to graph units.
-
-               3) OTOH, if the counter is "absolute", you'll have to provide 
the following
-                the counter unit - that is, the dimensions of the counter 
you're getting. Examples:
-                pages/s, packets transferred, etc.
-
-               4) If you want, you may provide the minimum and maximum values 
to expect. They aren't
-               mandatory, but once specified they MUST have the same order of 
magnitude and units of -w and
-               -c; otherwise. strange things will happen when you make graphs 
of your data.
-               */
-
-               double counter_value = 0.0;
-               if (config.value_list == NULL) {
-                       output_message = strdup(_("No counter specified"));
-               } else {
-                       preparelist(
-                               config.value_list); /* replace , between 
services with & to send the request */
-                       bool isPercent = (strchr(config.value_list, '%') != 
NULL);
-
-                       strtok(config.value_list, "&"); /* burn the first 
parameters */
-                       description = strtok(NULL, "&");
-                       counter_unit = strtok(NULL, "&");
-                       xasprintf(&send_buffer, "%s&8&%s", config.req_password, 
config.value_list);
-                       fetch_data(config.server_address, config.server_port, 
send_buffer);
-                       counter_value = atof(recv_buffer);
-
-                       bool allRight = false;
-                       if (description == NULL) {
-                               xasprintf(&output_message, "%.f", 
counter_value);
-                       } else if (isPercent) {
-                               counter_unit = strdup("%");
-                               allRight = true;
-                       }
-
-                       char *minval = NULL;
-                       char *maxval = NULL;
-                       double fminval = 0;
-                       double fmaxval = 0;
-                       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;
-
-                               if ((fminval == 0) && (minval == errcvt)) {
-                                       output_message = strdup(_("Minimum 
value contains non-numbers"));
-                               } else {
-                                       if ((fmaxval == 0) && (maxval == 
errcvt)) {
-                                               output_message = 
strdup(_("Maximum value contains non-numbers"));
-                                       } else {
-                                               allRight = true; /* Everything 
is OK. */
-                                       }
-                               }
-                       } else if ((counter_unit == NULL) && (description != 
NULL)) {
-                               output_message = strdup(_("No unit counter 
specified"));
-                       }
-
-                       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,
-                                                                       
config.warning_value, 1, config.critical_value,
-                                                                       
(!(isPercent) && (minval != NULL)), fminval,
-                                                                       
(!(isPercent) && (minval != NULL)), fmaxval));
-                       }
-               }
-
-               if (config.critical_value > config.warning_value) { /* Normal 
thresholds */
-                       if (config.check_critical_value && counter_value >= 
config.critical_value) {
-                               return_code = STATE_CRITICAL;
-                       } else if (config.check_warning_value && counter_value 
>= config.warning_value) {
-                               return_code = STATE_WARNING;
-                       } else {
-                               return_code = STATE_OK;
-                       }
-               } else { /* inverse thresholds */
-                       return_code = STATE_OK;
-                       if (config.check_critical_value && counter_value <= 
config.critical_value) {
-                               return_code = STATE_CRITICAL;
-                       } else if (config.check_warning_value && counter_value 
<= config.warning_value) {
-                               return_code = STATE_WARNING;
-                       }
-               }
-       } break;
-       case CHECK_FILEAGE:
-               if (config.value_list == NULL) {
-                       output_message = strdup(_("No counter specified"));
-               } else {
-                       preparelist(
-                               config.value_list); /* replace , between 
services with & to send the request */
-                       xasprintf(&send_buffer, "%s&9&%s", config.req_password, 
config.value_list);
-                       fetch_data(config.server_address, config.server_port, 
send_buffer);
-                       unsigned long age_in_minutes = atoi(strtok(recv_buffer, 
"&"));
-                       description = strtok(NULL, "&");
-                       output_message = strdup(description);
-
-                       if (config.critical_value > config.warning_value) { /* 
Normal thresholds */
-                               if (config.check_critical_value && 
age_in_minutes >= config.critical_value) {
-                                       return_code = STATE_CRITICAL;
-                               } else if (config.check_warning_value && 
age_in_minutes >= config.warning_value) {
-                                       return_code = STATE_WARNING;
-                               } else {
-                                       return_code = STATE_OK;
-                               }
-                       } else { /* inverse thresholds */
-                               if (config.check_critical_value && 
age_in_minutes <= config.critical_value) {
-                                       return_code = STATE_CRITICAL;
-                               } else if (config.check_warning_value && 
age_in_minutes <= config.warning_value) {
-                                       return_code = STATE_WARNING;
-                               } else {
-                                       return_code = STATE_OK;
-                               }
-                       }
-               }
-               break;
-
-       case CHECK_INSTANCES:
-               if (config.value_list == NULL) {
-                       output_message = strdup(_("No counter specified"));
-               } else {
-                       xasprintf(&send_buffer, "%s&10&%s", 
config.req_password, config.value_list);
-                       fetch_data(config.server_address, config.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;
-               }
-               break;
-
-       case CHECK_NONE:
-       default:
-               usage4(_("Please specify a variable to check"));
-               break;
-       }
-
-       /* reset timeout */
-       alarm(0);
-
-       if (perfdata == NULL) {
-               printf("%s\n", output_message);
-       } else {
-               printf("%s | %s\n", output_message, perfdata);
-       }
-       return return_code;
-}
-
-/* process command-line arguments */
-check_nt_config_wrapper process_arguments(int argc, char **argv) {
-       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}};
-
-       check_nt_config_wrapper result = {
-               .errorcode = OK,
-               .config = check_nt_config_init(),
-       };
-
-       /* no options were supplied */
-       if (argc < 2) {
-               result.errorcode = ERROR;
-               return result;
-       }
-
-       /* backwards compatibility */
-       if (!is_option(argv[1])) {
-               result.config.server_address = strdup(argv[1]);
-               argv[1] = argv[0];
-               argv = &argv[1];
-               argc--;
-       }
-
-       for (int index = 1; index < argc; index++) {
-               if (strcmp("-to", argv[index]) == 0) {
-                       strcpy(argv[index], "-t");
-               } else if (strcmp("-wv", argv[index]) == 0) {
-                       strcpy(argv[index], "-w");
-               } else if (strcmp("-cv", argv[index]) == 0) {
-                       strcpy(argv[index], "-c");
-               }
-       }
-
-       int option = 0;
-       while (true) {
-               int option_index = getopt_long(argc, argv, 
"+hVH:t:c:w:p:v:l:s:d:u", longopts, &option);
-
-               if (option_index == -1 || option_index == EOF || option_index 
== 1) {
-                       break;
-               }
-
-               switch (option_index) {
-               case '?': /* print short usage statement if args not parsable */
-                       usage5();
-               case 'h': /* help */
-                       print_help();
-                       exit(STATE_UNKNOWN);
-               case 'V': /* version */
-                       print_revision(progname, NP_VERSION);
-                       exit(STATE_UNKNOWN);
-               case 'H': /* hostname */
-                       result.config.server_address = optarg;
-                       break;
-               case 's': /* password */
-                       result.config.req_password = optarg;
-                       break;
-               case 'p': /* port */
-                       if (is_intnonneg(optarg)) {
-                               result.config.server_port = atoi(optarg);
-                       } else {
-                               die(STATE_UNKNOWN, _("Server port must be an 
integer\n"));
-                       }
-                       break;
-               case 'v':
-                       if (strlen(optarg) < 4) {
-                               result.errorcode = ERROR;
-                               return result;
-                       }
-                       if (!strcmp(optarg, "CLIENTVERSION")) {
-                               result.config.vars_to_check = 
CHECK_CLIENTVERSION;
-                       } else if (!strcmp(optarg, "CPULOAD")) {
-                               result.config.vars_to_check = CHECK_CPULOAD;
-                       } else if (!strcmp(optarg, "UPTIME")) {
-                               result.config.vars_to_check = CHECK_UPTIME;
-                       } else if (!strcmp(optarg, "USEDDISKSPACE")) {
-                               result.config.vars_to_check = 
CHECK_USEDDISKSPACE;
-                       } else if (!strcmp(optarg, "SERVICESTATE")) {
-                               result.config.vars_to_check = 
CHECK_SERVICESTATE;
-                       } else if (!strcmp(optarg, "PROCSTATE")) {
-                               result.config.vars_to_check = CHECK_PROCSTATE;
-                       } else if (!strcmp(optarg, "MEMUSE")) {
-                               result.config.vars_to_check = CHECK_MEMUSE;
-                       } else if (!strcmp(optarg, "COUNTER")) {
-                               result.config.vars_to_check = CHECK_COUNTER;
-                       } else if (!strcmp(optarg, "FILEAGE")) {
-                               result.config.vars_to_check = CHECK_FILEAGE;
-                       } else if (!strcmp(optarg, "INSTANCES")) {
-                               result.config.vars_to_check = CHECK_INSTANCES;
-                       } else {
-                               result.errorcode = ERROR;
-                               return result;
-                       }
-                       break;
-               case 'l': /* value list */
-                       result.config.value_list = optarg;
-                       break;
-               case 'w': /* warning threshold */
-                       result.config.warning_value = strtoul(optarg, NULL, 10);
-                       result.config.check_warning_value = true;
-                       break;
-               case 'c': /* critical threshold */
-                       result.config.critical_value = strtoul(optarg, NULL, 
10);
-                       result.config.check_critical_value = true;
-                       break;
-               case 'd': /* Display select for services */
-                       if (!strcmp(optarg, "SHOWALL")) {
-                               result.config.show_all = true;
-                       }
-                       break;
-               case 'u':
-                       socket_timeout_state = STATE_UNKNOWN;
-                       break;
-               case 't': /* timeout */
-                       socket_timeout = atoi(optarg);
-                       if (socket_timeout <= 0) {
-                               result.errorcode = ERROR;
-                               return result;
-                       }
-               }
-       }
-       if (result.config.server_address == NULL) {
-               usage4(_("You must provide a server address or host name"));
-       }
-
-       if (result.config.vars_to_check == CHECK_NONE) {
-               result.errorcode = ERROR;
-               return result;
-       }
-
-       if (result.config.req_password == NULL) {
-               result.config.req_password = strdup(_("None"));
-       }
-
-       return result;
-}
-
-void fetch_data(const char *address, int port, const char *sendb) {
-       int result = process_tcp_request(address, port, sendb, recv_buffer, 
sizeof(recv_buffer));
-
-       if (result != STATE_OK) {
-               die(result, _("could not fetch information from server\n"));
-       }
-
-       if (!strncmp(recv_buffer, "ERROR", 5)) {
-               die(STATE_UNKNOWN, "NSClient - %s\n", recv_buffer);
-       }
-}
-
-bool strtoularray(unsigned long *array, char *string, const char *delim) {
-       /* split a <delim> delimited string into a long array */
-       for (int idx = 0; idx < MAX_VALUE_LIST; idx++) {
-               array[idx] = 0;
-       }
-
-       int idx = 0;
-       for (char *t1 = strtok(string, delim); t1 != NULL; t1 = strtok(NULL, 
delim)) {
-               if (is_numeric(t1) && idx < MAX_VALUE_LIST) {
-                       array[idx] = strtoul(t1, NULL, 10);
-                       idx++;
-               } else {
-                       return false;
-               }
-       }
-       return true;
-}
-
-void preparelist(char *string) {
-       /* Replace all , with & which is the delimiter for the request */
-       for (int i = 0; (size_t)i < strlen(string); i++) {
-               if (string[i] == ',') {
-                       string[i] = '&';
-               }
-       }
-}
-
-void print_help(void) {
-       print_revision(progname, NP_VERSION);
-
-       printf("Copyright (c) 2000 Yves Rubin ([email protected])\n");
-       printf(COPYRIGHT, copyright, email);
-
-       printf("%s\n", _("This plugin collects data from the NSClient service 
running on a"));
-       printf("%s\n", _("Windows NT/2000/XP/2003 server."));
-
-       printf("\n\n");
-
-       print_usage();
-
-       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=<password>");
-       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=<parameters>");
-       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 <version> 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 <minutes range>,<warning threshold>,<critical 
threshold>."));
-       printf("  %s\n", _("<minute range> 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 <unit> "));
-       printf("  %s\n", _("<unit> = 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 <service1>,<service2>,<service3>,..."));
-       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 \"\\\\<performance 
object>\\\\counter\",\"<description>"));
-       printf("        %s\n", _("The <description> parameter is optional and 
is given to a printf "));
-       printf("  %s\n", _("output command which requires a float parameter."));
-       printf("  %s\n", _("If <description> 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 <hostname> -p <port> -v INSTANCES -l 
<counter object>"));
-       printf("  %s\n", _("<counter object> 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");
-}
diff --git a/plugins/check_nt.d/config.h b/plugins/check_nt.d/config.h
deleted file mode 100644
index 431889cb..00000000
--- a/plugins/check_nt.d/config.h
+++ /dev/null
@@ -1,53 +0,0 @@
-#pragma once
-
-#include "../../config.h"
-#include <stddef.h>
-
-enum {
-       PORT = 1248,
-};
-
-enum checkvars {
-       CHECK_NONE,
-       CHECK_CLIENTVERSION,
-       CHECK_CPULOAD,
-       CHECK_UPTIME,
-       CHECK_USEDDISKSPACE,
-       CHECK_SERVICESTATE,
-       CHECK_PROCSTATE,
-       CHECK_MEMUSE,
-       CHECK_COUNTER,
-       CHECK_FILEAGE,
-       CHECK_INSTANCES
-};
-
-typedef struct {
-       char *server_address;
-       int server_port;
-       char *req_password;
-       enum checkvars vars_to_check;
-       bool show_all;
-       char *value_list;
-       bool check_warning_value;
-       unsigned long warning_value;
-       bool check_critical_value;
-       unsigned long critical_value;
-} check_nt_config;
-
-check_nt_config check_nt_config_init() {
-       check_nt_config tmp = {
-               .server_address = NULL,
-               .server_port = PORT,
-               .req_password = NULL,
-
-               .vars_to_check = CHECK_NONE,
-               .show_all = false,
-               .value_list = NULL,
-
-               .check_warning_value = false,
-               .warning_value = 0,
-               .check_critical_value = false,
-               .critical_value = 0,
-       };
-       return tmp;
-}
diff --git a/plugins/tests/check_nt.t b/plugins/tests/check_nt.t
deleted file mode 100755
index 223d4933..00000000
--- a/plugins/tests/check_nt.t
+++ /dev/null
@@ -1,80 +0,0 @@
-#! /usr/bin/perl -w -I ..
-#
-# Test check_nt by having a stub check_nt daemon
-#
-
-use strict;
-use Test::More;
-use NPTest;
-use FindBin qw($Bin);
-
-use IO::Socket;
-use IO::Select;
-use POSIX;
-
-my $port = 50000 + int(rand(1000));
-
-my $pid = fork();
-if ($pid) {
-       # Parent
-       #print "parent\n";
-       # give our webserver some time to startup
-       sleep(1);
-} else {
-       # Child
-       #print "child\n";
-
-       my $server = IO::Socket::INET->new(
-               LocalPort => $port,
-               Type => SOCK_STREAM,
-               Reuse => 1,
-               Proto => "tcp",
-               Listen => 10,
-       ) or die "Cannot be a tcp server on port $port: $@";
-
-       $server->autoflush(1);
-
-       print "Please contact me at port $port\n";
-       while (my $client = $server->accept ) {
-               my $data = "";
-               my $rv = $client->recv($data, POSIX::BUFSIZ, 0);
-
-               my ($password, $command, $arg) = split('&', $data);
-               
-               if ($command eq "4") {
-                       if ($arg eq "c") {
-                               print $client "930000000&1000000000";
-                       } elsif ($arg eq "d") {
-                               print $client "UNKNOWN: Drive is not a fixed 
drive";
-                       }
-               }
-       }
-       exit;
-}
-
-END { if ($pid) { print "Killing $pid\n"; kill "INT", $pid } };
-
-if ($ARGV[0] && $ARGV[0] eq "-d") {
-       sleep 1000;
-}
-
-if (-x "./check_nt") {
-       plan tests => 5;
-} else {
-       plan skip_all => "No check_nt compiled";
-}
-
-my $result;
-my $command = "./check_nt -H 127.0.0.1 -p $port";
-
-$result = NPTest->testCmd( "$command -v USEDDISKSPACE -l c" );
-is( $result->return_code, 0, "USEDDISKSPACE c");
-is( $result->output, q{c:\ - total: 0.93 Gb - used: 0.07 Gb (7%) - free 0.87 
Gb (93%) | 'c:\ Used Space'=0.07Gb;0.00;0.00;0.00;0.93}, "Output right" );
-
-$result = NPTest->testCmd( "$command -v USEDDISKSPACE -l d" );
-is( $result->return_code, 3, "USEDDISKSPACE d - invalid");
-is( $result->output, "Free disk space : Invalid drive", "Output right" );
-
-$result = NPTest->testCmd( "./check_nt -v USEDDISKSPACE -l d" );
-is( $result->return_code, 3, "Fail if -H missing");
-


Reply via email to