Adding d/p/28_check_snmp_fix_regex_matches from upstream
This commit is contained in:
parent
e99bd7b1db
commit
73742e9c44
78
debian/patches/28_check_snmp_fix_regex_matches
vendored
Normal file
78
debian/patches/28_check_snmp_fix_regex_matches
vendored
Normal file
|
@ -0,0 +1,78 @@
|
|||
From 12d1b0cbab5469e230ea5b69b5f1fc411836de21 Mon Sep 17 00:00:00 2001
|
||||
From: Sven Nierlein <sven@nierlein.de>
|
||||
Date: Thu, 19 Jan 2023 23:29:01 +0100
|
||||
Subject: [PATCH] fix check_snmp regex matches
|
||||
|
||||
the multiplier function always tried to extract a number, even if the result
|
||||
is a string because of using a mib.
|
||||
|
||||
before:
|
||||
```
|
||||
./check_snmp -H hostname -P2c -c public -o IF-MIB::ifAdminStatus.11466 -vvv -r 0
|
||||
/usr/bin/snmpget -Le -t 10 -r 5 -m ALL -v 2c [context] [authpriv] 10.0.13.11:161 IF-MIB::ifAdminStatus.11466
|
||||
IF-MIB::ifAdminStatus.11466 = INTEGER: up(1)
|
||||
Processing oid 1 (line 1)
|
||||
oidname: IF-MIB::ifAdminStatus.11466
|
||||
response: = INTEGER: up(1)
|
||||
SNMP OK - 0 | IF-MIB::ifAdminStatus.11466=0;;
|
||||
```
|
||||
|
||||
the regexp 0 matches, even if the actual result is "up(1)".
|
||||
|
||||
after this patch:
|
||||
```
|
||||
./check_snmp -H hostname -P2c -c public -o IF-MIB::ifAdminStatus.11466 -vvv -r 0
|
||||
/usr/bin/snmpget -Le -t 10 -r 5 -m ALL -v 2c [context] [authpriv] 10.0.13.11:161 IF-MIB::ifAdminStatus.11466
|
||||
IF-MIB::ifAdminStatus.11466 = INTEGER: up(1)
|
||||
Processing oid 1 (line 1)
|
||||
oidname: IF-MIB::ifAdminStatus.11466
|
||||
response: = INTEGER: up(1)
|
||||
SNMP CRITICAL - *up(1)* |
|
||||
```
|
||||
---
|
||||
plugins/check_snmp.c | 23 +++++++++++++++++++++--
|
||||
1 file changed, 21 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/plugins/check_snmp.c b/plugins/check_snmp.c
|
||||
index 56bad8800..d3968a27d 100644
|
||||
--- a/plugins/check_snmp.c
|
||||
+++ b/plugins/check_snmp.c
|
||||
@@ -1165,17 +1165,36 @@ nextarg (char *str)
|
||||
char *
|
||||
multiply (char *str)
|
||||
{
|
||||
- double val = strtod (str, NULL);
|
||||
- val *= multiplier;
|
||||
+ char *endptr;
|
||||
+ double val;
|
||||
char *conv = "%f";
|
||||
+
|
||||
+ if(verbose>2)
|
||||
+ printf(" multiply input: %s\n", str);
|
||||
+
|
||||
+ val = strtod (str, &endptr);
|
||||
+ if ((val == 0.0) && (endptr == str)) {
|
||||
+ if(multiplier != 1) {
|
||||
+ die(STATE_UNKNOWN, _("multiplier set (%.1f), but input is not a number: %s"), multiplier, str);
|
||||
+ }
|
||||
+ return str;
|
||||
+ }
|
||||
+
|
||||
+ if(verbose>2)
|
||||
+ printf(" multiply extracted double: %f\n", val);
|
||||
+ val *= multiplier;
|
||||
if (fmtstr != "") {
|
||||
conv = fmtstr;
|
||||
}
|
||||
if (val == (int)val) {
|
||||
sprintf(str, "%.0f", val);
|
||||
} else {
|
||||
+ if(verbose>2)
|
||||
+ printf(" multiply using format: %s\n", conv);
|
||||
sprintf(str, conv, val);
|
||||
}
|
||||
+ if(verbose>2)
|
||||
+ printf(" multiply result: %s\n", str);
|
||||
return str;
|
||||
}
|
||||
|
1
debian/patches/series
vendored
1
debian/patches/series
vendored
|
@ -16,3 +16,4 @@
|
|||
25_spell_fixes
|
||||
26_check_mailq_fix_nullmailer_regex
|
||||
27_check_snmp_add_multiplier
|
||||
28_check_snmp_fix_regex_matches
|
||||
|
|
Loading…
Reference in a new issue