[monitoring-plugins] check_dns: returns incorrect state when ...
Jan Wagner
git at monitoring-plugins.org
Thu Jul 31 00:10:07 CEST 2014
Module: monitoring-plugins
Branch: master
Commit: d0da78ced184197b29af9fe910aaf56a9e7fe762
Author: Jan Wagner <waja at cyconet.org>
Date: Sun Sep 29 02:23:11 2013 +0200
URL: https://www.monitoring-plugins.org/repositories/monitoring-plugins/commit/?id=d0da78c
check_dns: returns incorrect state when specifying server
This patch verifies if the response is returned by the dns server we
are trying to check
---
Closes #981
Closes #982
Closes #1164
---
plugins/check_dns.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/plugins/check_dns.c b/plugins/check_dns.c
index 31a953d..da90da7 100644
--- a/plugins/check_dns.c
+++ b/plugins/check_dns.c
@@ -136,6 +136,28 @@ main (int argc, char **argv)
}
}
+ /* bug ID: 2946553 - Older versions of bind will use all available dns
+ servers, we have to match the one specified */
+ if (strstr (chld_out.line[i], "Server:") && strlen(dns_server) > 0) {
+ temp_buffer = index (chld_out.line[i], ':');
+ temp_buffer++;
+
+ /* Strip leading tabs */
+ for (; *temp_buffer != '\0' && *temp_buffer == '\t'; temp_buffer++)
+ /* NOOP */;
+
+ strip(temp_buffer);
+ if (temp_buffer==NULL || strlen(temp_buffer)==0) {
+ die (STATE_CRITICAL,
+ _("DNS CRITICAL - '%s' returned empty server string\n"),
+ NSLOOKUP_COMMAND);
+ }
+
+ if (strcmp(temp_buffer, dns_server) != 0) {
+ die (STATE_CRITICAL, _("No response from DNS %s\n"), dns_server);
+ }
+ }
+
/* the server is responding, we just got the host name... */
if (strstr (chld_out.line[i], "Name:"))
parse_address = TRUE;
More information about the Commits
mailing list