372 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			372 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
From 403cbe5d8bd073277f188bdb729ad3333855ab39 Mon Sep 17 00:00:00 2001
 | 
						|
From: Wolfgang Nieder <wnd@gmx.net>
 | 
						|
Date: Sat, 7 Jul 2018 09:12:44 +0200
 | 
						|
Subject: [PATCH 1/3] add 'multiplier' to modify current value
 | 
						|
 | 
						|
---
 | 
						|
 plugins/check_snmp.c       | 84 +++++++++++++++++++++++++++-----------
 | 
						|
 plugins/tests/check_snmp.t | 12 ++++--
 | 
						|
 2 files changed, 70 insertions(+), 26 deletions(-)
 | 
						|
 | 
						|
diff --git a/plugins/check_snmp.c b/plugins/check_snmp.c
 | 
						|
index 2601ccd89..d407609f5 100644
 | 
						|
--- a/plugins/check_snmp.c
 | 
						|
+++ b/plugins/check_snmp.c
 | 
						|
@@ -1,31 +1,31 @@
 | 
						|
 /*****************************************************************************
 | 
						|
-* 
 | 
						|
+*
 | 
						|
 * Monitoring check_snmp plugin
 | 
						|
-* 
 | 
						|
+*
 | 
						|
 * License: GPL
 | 
						|
 * Copyright (c) 1999-2007 Monitoring Plugins Development Team
 | 
						|
-* 
 | 
						|
+*
 | 
						|
 * Description:
 | 
						|
-* 
 | 
						|
+*
 | 
						|
 * This file contains the check_snmp plugin
 | 
						|
-* 
 | 
						|
+*
 | 
						|
 * Check status of remote machines and obtain system information via SNMP
 | 
						|
-* 
 | 
						|
-* 
 | 
						|
+*
 | 
						|
+*
 | 
						|
 * 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_snmp";
 | 
						|
@@ -90,6 +90,7 @@ char *thisarg (char *str);
 | 
						|
 char *nextarg (char *str);
 | 
						|
 void print_usage (void);
 | 
						|
 void print_help (void);
 | 
						|
+char *multiply (char *str);
 | 
						|
 
 | 
						|
 #include "regex.h"
 | 
						|
 char regex_expect[MAX_INPUT_BUFFER] = "";
 | 
						|
@@ -154,6 +155,8 @@ double *previous_value;
 | 
						|
 size_t previous_size = OID_COUNT_STEP;
 | 
						|
 int perf_labels = 1;
 | 
						|
 char* ip_version = "";
 | 
						|
+double multiplier = 1.0;
 | 
						|
+char *fmtstr = "";
 | 
						|
 
 | 
						|
 static char *fix_snmp_range(char *th)
 | 
						|
 {
 | 
						|
@@ -316,7 +319,7 @@ main (int argc, char **argv)
 | 
						|
 	for (i = 0; i < numcontext; i++) {
 | 
						|
 		command_line[10 + i] = contextargs[i];
 | 
						|
 	}
 | 
						|
-	
 | 
						|
+
 | 
						|
 	for (i = 0; i < numauthpriv; i++) {
 | 
						|
 		command_line[10 + numcontext + i] = authpriv[i];
 | 
						|
 	}
 | 
						|
@@ -330,7 +333,7 @@ main (int argc, char **argv)
 | 
						|
 
 | 
						|
 	for (i = 0; i < numoids; i++) {
 | 
						|
 		command_line[10 + numcontext + numauthpriv + 1 + i] = oids[i];
 | 
						|
-		xasprintf(&cl_hidden_auth, "%s %s", cl_hidden_auth, oids[i]);	
 | 
						|
+		xasprintf(&cl_hidden_auth, "%s %s", cl_hidden_auth, oids[i]);
 | 
						|
 	}
 | 
						|
 
 | 
						|
 	command_line[10 + numcontext + numauthpriv + 1 + numoids] = NULL;
 | 
						|
@@ -398,15 +401,15 @@ main (int argc, char **argv)
 | 
						|
 		is_counter=0;
 | 
						|
 		/* We strip out the datatype indicator for PHBs */
 | 
						|
 		if (strstr (response, "Gauge: ")) {
 | 
						|
-			show = strstr (response, "Gauge: ") + 7;
 | 
						|
-		} 
 | 
						|
+			show = multiply (strstr (response, "Gauge: ") + 7);
 | 
						|
+		}
 | 
						|
 		else if (strstr (response, "Gauge32: ")) {
 | 
						|
-			show = strstr (response, "Gauge32: ") + 9;
 | 
						|
-		} 
 | 
						|
+			show = multiply (strstr (response, "Gauge32: ") + 9);
 | 
						|
+		}
 | 
						|
 		else if (strstr (response, "Counter32: ")) {
 | 
						|
 			show = strstr (response, "Counter32: ") + 11;
 | 
						|
 			is_counter=1;
 | 
						|
-			if(!calculate_rate) 
 | 
						|
+			if(!calculate_rate)
 | 
						|
 				strcpy(type, "c");
 | 
						|
 		}
 | 
						|
 		else if (strstr (response, "Counter64: ")) {
 | 
						|
@@ -416,7 +419,10 @@ main (int argc, char **argv)
 | 
						|
 				strcpy(type, "c");
 | 
						|
 		}
 | 
						|
 		else if (strstr (response, "INTEGER: ")) {
 | 
						|
-			show = strstr (response, "INTEGER: ") + 9;
 | 
						|
+			show = multiply (strstr (response, "INTEGER: ") + 9);
 | 
						|
+			if (fmtstr != "") {
 | 
						|
+				conv = fmtstr;
 | 
						|
+			}
 | 
						|
 		}
 | 
						|
 		else if (strstr (response, "OID: ")) {
 | 
						|
 			show = strstr (response, "OID: ") + 5;
 | 
						|
@@ -616,7 +622,7 @@ main (int argc, char **argv)
 | 
						|
 		state_string=malloc(string_length);
 | 
						|
 		if(state_string==NULL)
 | 
						|
 			die(STATE_UNKNOWN, _("Cannot malloc"));
 | 
						|
-		
 | 
						|
+
 | 
						|
 		current_length=0;
 | 
						|
 		for(i=0; i<total_oids; i++) {
 | 
						|
 			xasprintf(&temp_string,"%.0f",response_value[i]);
 | 
						|
@@ -638,7 +644,7 @@ main (int argc, char **argv)
 | 
						|
 		state_string[--current_length]='\0';
 | 
						|
 		if (verbose > 2)
 | 
						|
 			printf("State string=%s\n",state_string);
 | 
						|
-		
 | 
						|
+
 | 
						|
 		/* This is not strictly the same as time now, but any subtle variations will cancel out */
 | 
						|
 		np_state_write_string(current_time, state_string );
 | 
						|
 		if(previous_state==NULL) {
 | 
						|
@@ -698,6 +704,8 @@ process_arguments (int argc, char **argv)
 | 
						|
 		{"perf-oids", no_argument, 0, 'O'},
 | 
						|
 		{"ipv4", no_argument, 0, '4'},
 | 
						|
 		{"ipv6", no_argument, 0, '6'},
 | 
						|
+		{"multiplier", required_argument, 0, 'M'},
 | 
						|
+		{"fmtstr", required_argument, 0, 'f'},
 | 
						|
 		{0, 0, 0, 0}
 | 
						|
 	};
 | 
						|
 
 | 
						|
@@ -715,7 +723,7 @@ process_arguments (int argc, char **argv)
 | 
						|
 	}
 | 
						|
 
 | 
						|
 	while (1) {
 | 
						|
-		c = getopt_long (argc, argv, "nhvVO46t:c:w:H:C:o:e:E:d:D:s:t:R:r:l:u:p:m:P:N:L:U:a:x:A:X:z:",
 | 
						|
+		c = getopt_long (argc, argv, "nhvVO46t:c:w:H:C:o:e:E:d:D:s:t:R:r:l:u:p:m:P:N:L:U:a:x:A:X:M:f:z:",
 | 
						|
 									 longopts, &option);
 | 
						|
 
 | 
						|
 		if (c == -1 || c == EOF)
 | 
						|
@@ -953,6 +961,16 @@ process_arguments (int argc, char **argv)
 | 
						|
 			if(verbose>2)
 | 
						|
 				printf("IPv6 detected! Will pass \"udp6:\" to snmpget.\n");
 | 
						|
 			break;
 | 
						|
+		case 'M':
 | 
						|
+			if ( strspn( optarg, "0123456789.," ) == strlen( optarg ) ) {
 | 
						|
+				multiplier=strtod(optarg,NULL);
 | 
						|
+			}
 | 
						|
+			break;
 | 
						|
+		case 'f':
 | 
						|
+			if (multiplier != 1.0) {
 | 
						|
+				fmtstr=optarg;
 | 
						|
+			}
 | 
						|
+			break;
 | 
						|
 		}
 | 
						|
 	}
 | 
						|
 
 | 
						|
@@ -1022,7 +1040,7 @@ validate_arguments ()
 | 
						|
 			contextargs[0] = strdup ("-n");
 | 
						|
 			contextargs[1] = strdup (context);
 | 
						|
 		}
 | 
						|
-		
 | 
						|
+
 | 
						|
 		if (seclevel == NULL)
 | 
						|
 			xasprintf(&seclevel, "noAuthNoPriv");
 | 
						|
 
 | 
						|
@@ -1143,6 +1161,21 @@ nextarg (char *str)
 | 
						|
 
 | 
						|
 
 | 
						|
 
 | 
						|
+/* multiply result (values 0 < n < 1 work as divider) */
 | 
						|
+char *
 | 
						|
+multiply (char *str)
 | 
						|
+{
 | 
						|
+	double val = strtod (str, NULL);
 | 
						|
+	val *= multiplier;
 | 
						|
+	if (val == (int)val) {
 | 
						|
+		sprintf(str, "%.0f", val);
 | 
						|
+	} else {
 | 
						|
+		sprintf(str, "%f", val);
 | 
						|
+	}
 | 
						|
+	return str;
 | 
						|
+}
 | 
						|
+
 | 
						|
+
 | 
						|
 void
 | 
						|
 print_help (void)
 | 
						|
 {
 | 
						|
@@ -1235,6 +1268,10 @@ print_help (void)
 | 
						|
 	printf ("    %s\n", _("Units label(s) for output data (e.g., 'sec.')."));
 | 
						|
 	printf (" %s\n", "-D, --output-delimiter=STRING");
 | 
						|
 	printf ("    %s\n", _("Separates output on multiple OID requests"));
 | 
						|
+	printf (" %s\n", "-M, --multiplier=FLOAT");
 | 
						|
+	printf ("    %s\n", _("Multiplies current value, 0 < n < 1 works as divider, defaults to 1"));
 | 
						|
+	printf (" %s\n", "-f, --fmtstr=STRING");
 | 
						|
+	printf ("    %s\n", _("C-style format string for float values (see option -M)"));
 | 
						|
 
 | 
						|
 	printf (UT_CONN_TIMEOUT, DEFAULT_SOCKET_TIMEOUT);
 | 
						|
 	printf ("    %s\n", _("NOTE the final timeout value is calculated using this formula: timeout_interval * retries + 5"));
 | 
						|
@@ -1287,4 +1324,5 @@ print_usage (void)
 | 
						|
 	printf ("[-l label] [-u units] [-p port-number] [-d delimiter] [-D output-delimiter]\n");
 | 
						|
 	printf ("[-m miblist] [-P snmp version] [-N context] [-L seclevel] [-U secname]\n");
 | 
						|
 	printf ("[-a authproto] [-A authpasswd] [-x privproto] [-X privpasswd] [-4|6]\n");
 | 
						|
+	printf ("[-M multiplier [-f format]]\n");
 | 
						|
 }
 | 
						|
diff --git a/plugins/tests/check_snmp.t b/plugins/tests/check_snmp.t
 | 
						|
index 0a77fa8ad..e9cc02135 100755
 | 
						|
--- a/plugins/tests/check_snmp.t
 | 
						|
+++ b/plugins/tests/check_snmp.t
 | 
						|
@@ -9,7 +9,7 @@ use NPTest;
 | 
						|
 use FindBin qw($Bin);
 | 
						|
 use POSIX qw/strftime/;
 | 
						|
 
 | 
						|
-my $tests = 73;
 | 
						|
+my $tests = 75;
 | 
						|
 # Check that all dependent modules are available
 | 
						|
 eval {
 | 
						|
 	require NetSNMP::OID;
 | 
						|
@@ -57,9 +57,9 @@ if ($pid) {
 | 
						|
 	exec("snmpd -c tests/conf/snmpd.conf -C -f -r udp:$port_snmp");
 | 
						|
 }
 | 
						|
 
 | 
						|
-END { 
 | 
						|
+END {
 | 
						|
 	foreach my $pid (@pids) {
 | 
						|
-		if ($pid) { print "Killing $pid\n"; kill "INT", $pid } 
 | 
						|
+		if ($pid) { print "Killing $pid\n"; kill "INT", $pid }
 | 
						|
 	}
 | 
						|
 };
 | 
						|
 
 | 
						|
@@ -268,3 +268,9 @@ like($res->output, '/SNMP WARNING - \d+ \*-4\* | iso.3.6.1.4.1.8072.3.2.67.10=\d
 | 
						|
 $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10,.1.3.6.1.4.1.8072.3.2.67.17 -w 1,2 -c 1" );
 | 
						|
 is($res->return_code, 2, "Multiple OIDs with some thresholds" );
 | 
						|
 like($res->output, '/SNMP CRITICAL - \*\d+\* \*-4\* | iso.3.6.1.4.1.8072.3.2.67.10=\d+c;1;2 iso.3.6.1.4.1.8072.3.2.67.17=-4;;/', "Multiple OIDs with thresholds output" );
 | 
						|
+
 | 
						|
+$res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.2.1.25.2.2.0 -M .125 ");
 | 
						|
+is($res->return_code, 0, "Multiply OK" );
 | 
						|
+
 | 
						|
+$res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.2.1.25.2.2.0 --multiplier=.0009765625 -f '%.3f' ");
 | 
						|
+is($res->return_code, 0, "Multiply format OK" );
 | 
						|
 | 
						|
From fdde61e978c4251b67ce4db42e4f5797c087cbec Mon Sep 17 00:00:00 2001
 | 
						|
From: Robert Bohne <robert.bohne@redhat.com>
 | 
						|
Date: Fri, 11 Nov 2022 11:10:44 +0100
 | 
						|
Subject: [PATCH 2/3] Improve tests for check_snmp & multiply option
 | 
						|
 | 
						|
---
 | 
						|
 plugins/tests/check_snmp.t        | 20 +++++++++++++++-----
 | 
						|
 plugins/tests/check_snmp_agent.pl |  8 ++++----
 | 
						|
 2 files changed, 19 insertions(+), 9 deletions(-)
 | 
						|
 | 
						|
diff --git a/plugins/tests/check_snmp.t b/plugins/tests/check_snmp.t
 | 
						|
index e9cc02135..bb5b8db66 100755
 | 
						|
--- a/plugins/tests/check_snmp.t
 | 
						|
+++ b/plugins/tests/check_snmp.t
 | 
						|
@@ -9,7 +9,7 @@ use NPTest;
 | 
						|
 use FindBin qw($Bin);
 | 
						|
 use POSIX qw/strftime/;
 | 
						|
 
 | 
						|
-my $tests = 75;
 | 
						|
+my $tests = 81;
 | 
						|
 # Check that all dependent modules are available
 | 
						|
 eval {
 | 
						|
 	require NetSNMP::OID;
 | 
						|
@@ -269,8 +269,18 @@ $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1
 | 
						|
 is($res->return_code, 2, "Multiple OIDs with some thresholds" );
 | 
						|
 like($res->output, '/SNMP CRITICAL - \*\d+\* \*-4\* | iso.3.6.1.4.1.8072.3.2.67.10=\d+c;1;2 iso.3.6.1.4.1.8072.3.2.67.17=-4;;/', "Multiple OIDs with thresholds output" );
 | 
						|
 
 | 
						|
-$res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.2.1.25.2.2.0 -M .125 ");
 | 
						|
-is($res->return_code, 0, "Multiply OK" );
 | 
						|
+$res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.19");
 | 
						|
+is($res->return_code, 0, "Test plain .1.3.6.1.4.1.8072.3.2.67.6 RC" );
 | 
						|
+is($res->output,'SNMP OK - 42 | iso.3.6.1.4.1.8072.3.2.67.19=42 ', "Test plain value of .1.3.6.1.4.1.8072.3.2.67.1" );
 | 
						|
 
 | 
						|
-$res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.2.1.25.2.2.0 --multiplier=.0009765625 -f '%.3f' ");
 | 
						|
-is($res->return_code, 0, "Multiply format OK" );
 | 
						|
+$res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.19 -M .1");
 | 
						|
+is($res->return_code, 0, "Test multiply RC" );
 | 
						|
+is($res->output,'SNMP OK - 4.200000 | iso.3.6.1.4.1.8072.3.2.67.19=4.200000 ' , "Test multiply .1 output" );
 | 
						|
+
 | 
						|
+$res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.19 --multiplier=.1 -f '%.2f' ");
 | 
						|
+is($res->return_code, 0, "Test multiply RC + format" );
 | 
						|
+is($res->output, 'SNMP OK - 4.200000 | iso.3.6.1.4.1.8072.3.2.67.19=4.200000 ', "Test multiply .1 output + format" );
 | 
						|
+
 | 
						|
+$res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.19 --multiplier=.1 -f '%.2f' -w 1");
 | 
						|
+is($res->return_code, 1, "Test multiply RC + format + thresholds" );
 | 
						|
+is($res->output, 'SNMP WARNING - *4.20* | iso.3.6.1.4.1.8072.3.2.67.19=4.20;1 ', "Test multiply .1 output + format + thresholds" );
 | 
						|
diff --git a/plugins/tests/check_snmp_agent.pl b/plugins/tests/check_snmp_agent.pl
 | 
						|
index 0e41d575d..38912e98b 100644
 | 
						|
--- a/plugins/tests/check_snmp_agent.pl
 | 
						|
+++ b/plugins/tests/check_snmp_agent.pl
 | 
						|
@@ -32,11 +32,11 @@
 | 
						|
 because we\'re not done yet!';
 | 
						|
 
 | 
						|
 # Next are arrays of indexes (Type, initial value and increments)
 | 
						|
-# 0..16 <---- please update comment when adding/removing fields
 | 
						|
-my @fields = (ASN_OCTET_STR, ASN_OCTET_STR, ASN_OCTET_STR, ASN_OCTET_STR, ASN_OCTET_STR, ASN_UNSIGNED, ASN_UNSIGNED, ASN_COUNTER, ASN_COUNTER64, ASN_UNSIGNED, ASN_COUNTER, ASN_OCTET_STR, ASN_OCTET_STR, ASN_OCTET_STR, ASN_OCTET_STR, ASN_OCTET_STR, ASN_INTEGER, ASN_OCTET_STR, ASN_OCTET_STR );
 | 
						|
-my @values = ($multiline, $multilin2, $multilin3, $multilin4, $multilin5, 4294965296, 1000, 4294965296, uint64("18446744073709351616"), int(rand(2**32)), 64000, "stringtests", "3.5", "87.4startswithnumberbutshouldbestring", '555"I said"', 'CUSTOM CHECK OK: foo is 12345', -2, '-4', '-6.6' );
 | 
						|
+# 0..19 <---- please update comment when adding/removing fields
 | 
						|
+my @fields = (ASN_OCTET_STR, ASN_OCTET_STR, ASN_OCTET_STR, ASN_OCTET_STR, ASN_OCTET_STR, ASN_UNSIGNED, ASN_UNSIGNED, ASN_COUNTER, ASN_COUNTER64, ASN_UNSIGNED, ASN_COUNTER, ASN_OCTET_STR, ASN_OCTET_STR, ASN_OCTET_STR, ASN_OCTET_STR, ASN_OCTET_STR, ASN_INTEGER, ASN_OCTET_STR, ASN_OCTET_STR, ASN_INTEGER );
 | 
						|
+my @values = ($multiline, $multilin2, $multilin3, $multilin4, $multilin5, 4294965296, 1000, 4294965296, uint64("18446744073709351616"), int(rand(2**32)), 64000, "stringtests", "3.5", "87.4startswithnumberbutshouldbestring", '555"I said"', 'CUSTOM CHECK OK: foo is 12345', -2, '-4', '-6.6', 42 );
 | 
						|
 # undef increments are randomized
 | 
						|
-my @incrts = (undef, undef, undef, undef, undef, 1000, -500, 1000, 100000, undef, 666, undef, undef, undef, undef, undef, -1, undef, undef );
 | 
						|
+my @incrts = (undef, undef, undef, undef, undef, 1000, -500, 1000, 100000, undef, 666, undef, undef, undef, undef, undef, -1, undef, undef, 0 );
 | 
						|
 
 | 
						|
 # Number of elements in our OID
 | 
						|
 my $oidelts;
 | 
						|
 | 
						|
From 84dddab6fe6315bbe4ad5197b9a4b56ebc89e007 Mon Sep 17 00:00:00 2001
 | 
						|
From: Sven Nierlein <sven@nierlein.de>
 | 
						|
Date: Thu, 22 Dec 2022 12:02:52 +0100
 | 
						|
Subject: [PATCH 3/3] check_snmp: always apply format when applying multiplier
 | 
						|
 | 
						|
---
 | 
						|
 plugins/check_snmp.c       | 6 +++++-
 | 
						|
 plugins/tests/check_snmp.t | 2 +-
 | 
						|
 2 files changed, 6 insertions(+), 2 deletions(-)
 | 
						|
 | 
						|
diff --git a/plugins/check_snmp.c b/plugins/check_snmp.c
 | 
						|
index d407609f5..56bad8800 100644
 | 
						|
--- a/plugins/check_snmp.c
 | 
						|
+++ b/plugins/check_snmp.c
 | 
						|
@@ -1167,10 +1167,14 @@ multiply (char *str)
 | 
						|
 {
 | 
						|
 	double val = strtod (str, NULL);
 | 
						|
 	val *= multiplier;
 | 
						|
+	char *conv = "%f";
 | 
						|
+	if (fmtstr != "") {
 | 
						|
+		conv = fmtstr;
 | 
						|
+	}
 | 
						|
 	if (val == (int)val) {
 | 
						|
 		sprintf(str, "%.0f", val);
 | 
						|
 	} else {
 | 
						|
-		sprintf(str, "%f", val);
 | 
						|
+		sprintf(str, conv, val);
 | 
						|
 	}
 | 
						|
 	return str;
 | 
						|
 }
 | 
						|
diff --git a/plugins/tests/check_snmp.t b/plugins/tests/check_snmp.t
 | 
						|
index bb5b8db66..bc03ec604 100755
 | 
						|
--- a/plugins/tests/check_snmp.t
 | 
						|
+++ b/plugins/tests/check_snmp.t
 | 
						|
@@ -279,7 +279,7 @@ is($res->output,'SNMP OK - 4.200000 | iso.3.6.1.4.1.8072.3.2.67.19=4.200000 ' ,
 | 
						|
 
 | 
						|
 $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.19 --multiplier=.1 -f '%.2f' ");
 | 
						|
 is($res->return_code, 0, "Test multiply RC + format" );
 | 
						|
-is($res->output, 'SNMP OK - 4.200000 | iso.3.6.1.4.1.8072.3.2.67.19=4.200000 ', "Test multiply .1 output + format" );
 | 
						|
+is($res->output, 'SNMP OK - 4.20 | iso.3.6.1.4.1.8072.3.2.67.19=4.20 ', "Test multiply .1 output + format" );
 | 
						|
 
 | 
						|
 $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.19 --multiplier=.1 -f '%.2f' -w 1");
 | 
						|
 is($res->return_code, 1, "Test multiply RC + format + thresholds" );
 |