[Nagiosplug-devel] [ nagiosplug-Bugs-1296242 ] check_nagios 1.26 (plugins 1.4.2) not working with Nagios 2
SourceForge.net
noreply at sourceforge.net
Fri Dec 2 14:29:15 CET 2005
Bugs item #1296242, was opened at 2005-09-20 11:20
Message generated for change (Comment added) made by tonvoon
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=397597&aid=1296242&group_id=29880
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Parsing problem
Group: None
>Status: Closed
>Resolution: Fixed
Priority: 5
Submitted By: Daniel Bimschas (bimschas)
Assigned to: Ton Voon (tonvoon)
Summary: check_nagios 1.26 (plugins 1.4.2) not working with Nagios 2
Initial Comment:
Hi,
the check_nagios plugin always gets the last_entry_time
wrong when doing checks on NAGIOSHOME/var/status.dat.
I made a little fix, my diff:
65,67c65
< char tag[] = "created=";
< char *dummy = NULL;
<
---
>
92,97c90,94
< temp_ptr = strtok (input_buffer, tag);
< temp_ptr = strtok (NULL,tag);
< if (temp_ptr != NULL) {
< latest_entry_time = strtoul
(temp_ptr,NULL,10);
< break;
< }
---
> temp_ptr = strtok (input_buffer, "]");
> temp_entry_time =
> (temp_ptr == NULL) ? 0L :
strtoul (temp_ptr + 1, NULL, 10);
> if (temp_entry_time > latest_entry_time)
> latest_entry_time =
temp_entry_time;
----------------------------------------------------------------------
>Comment By: Ton Voon (tonvoon)
Date: 2005-12-02 22:28
Message:
Logged In: YES
user_id=664364
Gerhard,
Thanks for your patch. Applied to CVS now.
Ton
----------------------------------------------------------------------
Comment By: gerhard lausser (lausser)
Date: 2005-12-02 14:02
Message:
Logged In: YES
user_id=613416
Hi,
i stumbled into the same problem and modified the fgets
loop so that both nagios versions can be handled.
while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, fp)) {
if (temp_ptr = strstr (input_buffer, "created=")) {
temp_entry_time = strtoul (temp_ptr + 8, NULL, 10);
latest_entry_time = temp_entry_time;
break;
} else if (temp_ptr = strtok (input_buffer, "]")) {
temp_entry_time = strtoul (temp_ptr + 1, NULL, 10);
if (temp_entry_time > latest_entry_time)
latest_entry_time = temp_entry_time;
}
}
fclose (fp);
The first branch recognizes a version2 status.log which
stores it's modification date in a structure like this:
info {
created=1133528543
version=2.0b4
}
If the created= is found, no more parsing is necessary and
the loop will be left with break.
The second branch does principally the same as the current
code, but calculates temp_entry_time only if actually
a ']' was found.
Here is a patch, which can be applied like this.
# cd nagios-plugins-1.4.2
# patch -Np0 < check_nagios.patch.v2
diff -Naur plugins/check_nagios.c plugins.v2/check_nagios.c
--- plugins/check_nagios.c 2005-12-02
14:49:11.143735914 +0100
+++ plugins.v2/check_nagios.c 2005-12-02
14:49:57.157079844 +0100
@@ -87,11 +87,15 @@
/* get the date/time of the last item updated in
the log */
while (fgets (input_buffer, MAX_INPUT_BUFFER - 1,
fp)) {
- temp_ptr = strtok (input_buffer, "]");
- temp_entry_time =
- (temp_ptr == NULL) ? 0L : strtoul
(temp_ptr + 1, NULL, 10);
- if (temp_entry_time > latest_entry_time)
- latest_entry_time =
temp_entry_time;
+ if (temp_ptr = strstr
(input_buffer, "created=")) {
+ temp_entry_time = strtoul
(temp_ptr + 8, NULL, 10);
+ latest_entry_time =
temp_entry_time;
+ break;
+ } else if (temp_ptr = strtok
(input_buffer, "]")) {
+ temp_entry_time = strtoul
(temp_ptr + 1, NULL, 10);
+ if (temp_entry_time >
latest_entry_time)
+ latest_entry_time =
temp_entry_time;
+ }
}
fclose (fp);
If the formatting is messed up, you can find it also here:
http://people.consol.de/~lausser/nagios/check_nagios.patch.
v2
Greetings from Munich,
Gerhard
----------------------------------------------------------------------
Comment By: Ton Voon (tonvoon)
Date: 2005-09-20 11:36
Message:
Logged In: YES
user_id=664364
Daniel,
Thanks for the patch. Can you attach a diff -u output please as these
are easier to parse. Also, could you attach an extract of status.dat
please (I don't have access to a Nagios 2 version).
Ideally, we want a check_nagios which can read either nagios1 or
nagios2 format, so if you can provide a patch that can handle both, it
will definitely go in.
Ton
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=397597&aid=1296242&group_id=29880
More information about the Devel
mailing list