aboutsummaryrefslogtreecommitdiff
path: root/plugins/check_ups.c
diff options
context:
space:
mode:
authorGravatar Thomas Guyot-Sionnest <dermoth@users.sourceforge.net> 2008-11-04 04:46:31 +0000
committerGravatar Thomas Guyot-Sionnest <dermoth@users.sourceforge.net> 2008-11-04 04:46:31 +0000
commit47fddad5fd5808cd5540a9c8c1a72d8a66348546 (patch)
tree8071260130372b4a8d6529a4c7790d5e08341273 /plugins/check_ups.c
parent96d628142872385215bbe4c535f3fcd1195505eb (diff)
downloadmonitoring-plugins-47fddad5fd5808cd5540a9c8c1a72d8a66348546.tar.gz
check_ups now sends a LOGOUT string (debian bug #387001)
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@2062 f882894a-f735-0410-b71e-b25c423dba1c
Diffstat (limited to 'plugins/check_ups.c')
-rw-r--r--plugins/check_ups.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/plugins/check_ups.c b/plugins/check_ups.c
index 154508db..bbd963a9 100644
--- a/plugins/check_ups.c
+++ b/plugins/check_ups.c
@@ -398,12 +398,15 @@ get_ups_variable (const char *varname, char *buf, size_t buflen)
char temp_buffer[MAX_INPUT_BUFFER];
char send_buffer[MAX_INPUT_BUFFER];
char *ptr;
+ char *logout = "OK Goodbye\n";
+ int logout_len = strlen(logout);
int len;
*buf=0;
/* create the command string to send to the UPS daemon */
- sprintf (send_buffer, "GET VAR %s %s\n", ups_name, varname);
+ /* Add LOGOUT to avoid read failure logs */
+ sprintf (send_buffer, "GET VAR %s %s\nLOGOUT\n", ups_name, varname);
/* send the command to the daemon and get a response back */
if (process_tcp_request
@@ -415,6 +418,7 @@ get_ups_variable (const char *varname, char *buf, size_t buflen)
ptr = temp_buffer;
len = strlen(ptr);
+ if (len > logout_len && strcmp (ptr + len - logout_len, logout) == 0) len -= logout_len;
if (len > 0 && ptr[len-1] == '\n') ptr[len-1]=0;
if (strcmp (ptr, "ERR UNKNOWN-UPS") == 0) {
printf (_("CRITICAL - no such ups '%s' on that host\n"), ups_name);