[monitoring-plugins] check_dns: Tests and info

Nicolai git at monitoring-plugins.org
Wed Jan 4 15:00:12 CET 2017


 Module: monitoring-plugins
 Branch: master
 Commit: ea756ac4ad511cab67b0347cd318945bea86a8b9
 Author: Nicolai <NicolaiSoeborg at users.noreply.github.com>
   Date: Fri Dec 23 20:44:45 2016 +0100
    URL: https://www.monitoring-plugins.org/repositories/monitoring-plugins/commit/?id=ea756ac

check_dns: Tests and info

---

 NEWS                  |  4 ++++
 THANKS.in             |  1 +
 plugins/check_dns.c   |  2 +-
 plugins/t/check_dns.t | 22 ++++++++++++++++++++--
 4 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/NEWS b/NEWS
index 9462d7a..7be8048 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,10 @@
 This file documents the major additions and syntax changes between releases.
 
 2.3 [...]
+	ENHANCEMENTS
+	check_dns: allow 'expected address' (-a) to be specified in CIDR notation
+	  (IPv4 only).
+
 	FIXES
 	Fix regression where check_dhcp was rereading response in a tight loop
 
diff --git a/THANKS.in b/THANKS.in
index 86767c4..ebc8155 100644
--- a/THANKS.in
+++ b/THANKS.in
@@ -355,3 +355,4 @@ Michael Melcher
 Sven Geggus
 Thomas Kurschel
 Yannick Charton
+Nicolai Søborg
diff --git a/plugins/check_dns.c b/plugins/check_dns.c
index 4067c14..5feafc8 100644
--- a/plugins/check_dns.c
+++ b/plugins/check_dns.c
@@ -308,7 +308,7 @@ ip_match_cidr(const char *addr, const char *cidr_ro)
   mask = atoi(mask_c);
 
   /* https://www.cryptobells.com/verifying-ips-in-a-subnet-in-php/ */
-  return ( ip2long(addr) & ~ ( ( 1 << ( 32 - mask ) ) - 1 ) ) == ( ip2long(subnet) >> (32 - mask) ) << (32 - mask);
+  return (ip2long(addr) & ~((1 << (32 - mask)) - 1)) == (ip2long(subnet) >> (32 - mask)) << (32 - mask);
 }
 
 unsigned long
diff --git a/plugins/t/check_dns.t b/plugins/t/check_dns.t
index 035e768..3dbb718 100644
--- a/plugins/t/check_dns.t
+++ b/plugins/t/check_dns.t
@@ -10,7 +10,7 @@ use NPTest;
 
 plan skip_all => "check_dns not compiled" unless (-x "check_dns");
 
-plan tests => 16;
+plan tests => 19;
 
 my $successOutput = '/DNS OK: [\.0-9]+ seconds? response time/';
 
@@ -23,7 +23,19 @@ my $hostname_valid = getTestParameter(
 my $hostname_valid_ip = getTestParameter(
 			"NP_HOSTNAME_VALID_IP",
 			"The IP address of the valid hostname $hostname_valid",
-			"66.118.156.50",
+			"130.133.8.40",
+			);
+
+my $hostname_valid_cidr = getTestParameter(
+			"NP_HOSTNAME_VALID_CIDR",
+			"An valid CIDR range containing $hostname_valid_ip",
+			"130.133.8.41/30",
+			);
+
+my $hostname_invalid_cidr = getTestParameter(
+			"NP_HOSTNAME_INVALID_CIDR",
+			"An valid CIDR range not containing $hostname_valid_ip",
+			"130.133.8.39/30",
 			);
 
 my $hostname_valid_reverse = getTestParameter(
@@ -87,3 +99,9 @@ $res = NPTest->testCmd("./check_dns -H $hostname_valid_ip -a $hostname_valid_rev
 cmp_ok( $res->return_code, '==', 0, "Got expected fqdn");
 like  ( $res->output, $successOutput, "Output OK");
 
+$res = NPTest->testCmd("./check_dns -H $hostname_valid -a $hostname_valid_cidr -t 5");
+cmp_ok( $res->return_code, '==', 0, "Got expected address");
+
+$res = NPTest->testCmd("./check_dns -H $hostname_valid -a $hostname_invalid_cidr -t 5");
+cmp_ok( $res->return_code, '==', 2, "Got wrong address");
+like  ( $res->output, "/^DNS CRITICAL.*expected '$hostname_invalid_cidr' but got '$hostname_valid_ip'".'$/', "Output OK");



More information about the Commits mailing list