From 0b6423f9c99d9edf8c96fefd0f6c453859395aa1 Mon Sep 17 00:00:00 2001 From: Holger Weiss Date: Mon, 30 Sep 2013 00:03:24 +0200 Subject: Import Nagios Plugins site Import the Nagios Plugins web site, Cronjobs, infrastructure scripts, and configuration files. --- ...ck_users-use-utxent-functions-to-get-data.patch | 98 ++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 web/attachments/418908-0001-check_users-use-utxent-functions-to-get-data.patch (limited to 'web/attachments/418908-0001-check_users-use-utxent-functions-to-get-data.patch') diff --git a/web/attachments/418908-0001-check_users-use-utxent-functions-to-get-data.patch b/web/attachments/418908-0001-check_users-use-utxent-functions-to-get-data.patch new file mode 100644 index 0000000..84043bd --- /dev/null +++ b/web/attachments/418908-0001-check_users-use-utxent-functions-to-get-data.patch @@ -0,0 +1,98 @@ +From 10d9e2aadb3f7db0ab784a1843abcea570adf9ec Mon Sep 17 00:00:00 2001 +From: Marc Remy +Date: Wed, 20 Jul 2011 21:18:42 +0200 +Subject: [PATCH] check_users: use utxent functions to get data + +--- + plugins/Makefile.am | 2 +- + plugins/check_users.c | 38 ++++++++------------------------------ + 2 files changed, 9 insertions(+), 31 deletions(-) + +diff --git a/plugins/Makefile.am b/plugins/Makefile.am +index 36a28b0..3a2afc1 100644 +--- a/plugins/Makefile.am ++++ b/plugins/Makefile.am +@@ -101,7 +101,7 @@ check_tcp_LDADD = $(SSLOBJS) $(NETLIBS) $(SSLLIBS) + check_time_LDADD = $(NETLIBS) + check_ntp_time_LDADD = $(NETLIBS) $(MATHLIBS) + check_ups_LDADD = $(NETLIBS) +-check_users_LDADD = $(BASEOBJS) popen.o ++check_users_LDADD = $(BASEOBJS) + check_by_ssh_LDADD = $(NETLIBS) + check_ide_smart_LDADD = $(BASEOBJS) + negate_LDADD = $(BASEOBJS) +diff --git a/plugins/check_users.c b/plugins/check_users.c +index 8368612..fb8bcca 100644 +--- a/plugins/check_users.c ++++ b/plugins/check_users.c +@@ -35,8 +35,8 @@ const char *copyright = "2000-2007"; + const char *email = "nagiosplug-devel@lists.sourceforge.net"; + + #include "common.h" +-#include "popen.h" + #include "utils.h" ++#include + + #define possibly_set(a,b) ((a) == 0 ? (b) : 0) + +@@ -54,6 +54,7 @@ main (int argc, char **argv) + int result = STATE_UNKNOWN; + char input_buffer[MAX_INPUT_BUFFER]; + char *perf; ++ struct utmpx *putmpx; + + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); +@@ -67,43 +68,20 @@ main (int argc, char **argv) + if (process_arguments (argc, argv) == ERROR) + usage4 (_("Could not parse arguments")); + +- /* run the command */ +- child_process = spopen (WHO_COMMAND); +- if (child_process == NULL) { +- printf (_("Could not open pipe: %s\n"), WHO_COMMAND); +- return STATE_UNKNOWN; +- } +- +- child_stderr = fdopen (child_stderr_array[fileno (child_process)], "r"); +- if (child_stderr == NULL) +- printf (_("Could not open stderr for %s\n"), WHO_COMMAND); +- + users = 0; + +- while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) { ++ /* get currently logged users from utmpx */ ++ setutxent(); + +- /* increment 'users' on all lines except total user count */ +- if (input_buffer[0] != '#') { ++ while( (putmpx=getutxent()) ) { ++ if( (putmpx->ut_type==USER_PROCESS) ) { + users++; +- continue; + } +- +- /* get total logged in users */ +- if (sscanf (input_buffer, _("# users=%d"), &users) == 1) +- break; +- + } + +- /* check STDERR */ +- if (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_stderr)) +- result = possibly_set (result, STATE_UNKNOWN); +- (void) fclose (child_stderr); +- +- /* close the pipe */ +- if (spclose (child_process)) +- result = possibly_set (result, STATE_UNKNOWN); ++ endutxent(); + +- /* else check the user count against warning and critical thresholds */ ++ /* check the user count against warning and critical thresholds */ + if (users > cusers) + result = STATE_CRITICAL; + else if (users > wusers) +-- +1.7.2.5 + -- cgit v1.2.3-74-g34f1