From e05128fa3c56e82454f803544af523840632dd80 Mon Sep 17 00:00:00 2001 From: Rostislav Opocensky Date: Tue, 7 Dec 2021 15:29:34 +0100 Subject: [PATCH] pass nwc_health check SNMPv3 args only if needed (#9095) * pass nwc_health check SNMPv3 args only if needed check_nwc_health fails if any of the SNMPv3 arguments were passed but the SNMP version 3 protocol was not requested. For instance the following works: check_nwc_health --hostname 192.0.2.3 --mode cpu-load \ --protocol 1 --community public While the following plugin invocation results in an error: check_nwc_health --hostname 192.0.2.3 --mode cpu-load \ --protocol 1 --community public \ --username joe --authpassword xxx The superfluous SNMPv3 arguments may easily get inherited e.g. from host templates. * string()ify the result of macro() calls Always convert results of macro("$nwc_health_protocol$") to strings so both numbers and strings are correctly recognized. * Revert "string()ify the result of macro() calls" This reverts commit 3636b5b4ba7803a286bb4828a92370aa9478b34b. Wrong method applied to the result of macro(). * string()ify the result of macro() calls Always convert results of macro("$nwc_health_protocol$") in the set_if clauses of the nwc_health command arguments to strings. Both numbers and strings are then correctly recognized as the nwc_health_protocol argument. * string()ify the result of macro() calls Always convert results of macro("$nwc_health_protocol$") in the set_if clauses of the nwc_health command arguments to strings. Both numbers and strings are then correctly recognized as the nwc_health_protocol argument. --- itl/plugins-contrib.d/network-components.conf | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/itl/plugins-contrib.d/network-components.conf b/itl/plugins-contrib.d/network-components.conf index 333a82c59..c33be561b 100644 --- a/itl/plugins-contrib.d/network-components.conf +++ b/itl/plugins-contrib.d/network-components.conf @@ -525,22 +525,27 @@ object CheckCommand "nwc_health" { "--username" = { value = "$nwc_health_username$" description = "The securityName for the USM security model (SNMPv3 only)" + set_if = {{ string(macro("$nwc_health_protocol$")) == "3" }} } "--authpassword" = { value = "$nwc_health_authpassword$" description = "The authentication password for SNMPv3" + set_if = {{ string(macro("$nwc_health_protocol$")) == "3" }} } "--authprotocol" = { value = "$nwc_health_authprotocol$" description = "The authentication protocol for SNMPv3 (md5|sha)" + set_if = {{ string(macro("$nwc_health_protocol$")) == "3" }} } "--privpassword" = { value = "$nwc_health_privpassword$" description = "The password for authPriv security level" + set_if = {{ string(macro("$nwc_health_protocol$")) == "3" }} } "--privprotocol" = { value = "$nwc_health_privprotocol$" description = "The private protocol for SNMPv3 (des|aes|aes128|3des|3desde)" + set_if = {{ string(macro("$nwc_health_protocol$")) == "3" }} } "--contextengineid" = { value = "$nwc_health_contextengineid$"