diff options
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/check_dns.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/plugins/check_dns.c b/plugins/check_dns.c index c30adac7..b0ab23ca 100644 --- a/plugins/check_dns.c +++ b/plugins/check_dns.c | |||
| @@ -150,6 +150,10 @@ main (int argc, char **argv) | |||
| 150 | 150 | ||
| 151 | /* scan stderr */ | 151 | /* scan stderr */ |
| 152 | while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_stderr)) { | 152 | while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_stderr)) { |
| 153 | |||
| 154 | if (verbose) | ||
| 155 | printf ("%s", input_buffer); | ||
| 156 | |||
| 153 | if (error_scan (input_buffer) != STATE_OK) { | 157 | if (error_scan (input_buffer) != STATE_OK) { |
| 154 | result = max_state (result, error_scan (input_buffer)); | 158 | result = max_state (result, error_scan (input_buffer)); |
| 155 | output = strdup (1 + index (input_buffer, ':')); | 159 | output = strdup (1 + index (input_buffer, ':')); |
| @@ -163,7 +167,7 @@ main (int argc, char **argv) | |||
| 163 | /* close stdout */ | 167 | /* close stdout */ |
| 164 | if (spclose (child_process)) { | 168 | if (spclose (child_process)) { |
| 165 | result = max_state (result, STATE_WARNING); | 169 | result = max_state (result, STATE_WARNING); |
| 166 | if (!strcmp (output, "")) | 170 | if (output == NULL || !strcmp (output, "")) |
| 167 | output = strdup (_("nslookup returned error status")); | 171 | output = strdup (_("nslookup returned error status")); |
| 168 | } | 172 | } |
| 169 | 173 | ||
| @@ -240,6 +244,14 @@ error_scan (char *input_buffer) | |||
| 240 | strstr (input_buffer, ": REFUSED"))) | 244 | strstr (input_buffer, ": REFUSED"))) |
| 241 | die (STATE_CRITICAL, _("Connection to DNS %s was refused\n"), dns_server); | 245 | die (STATE_CRITICAL, _("Connection to DNS %s was refused\n"), dns_server); |
| 242 | 246 | ||
| 247 | /* Query refused (usually by an ACL in the namserver) */ | ||
| 248 | else if (strstr (input_buffer, "Query refused")) | ||
| 249 | die (STATE_CRITICAL, _("Query was refused by DNS server at %s\n"), dns_server); | ||
| 250 | |||
| 251 | /* No information (e.g. nameserver IP has two PTR records) */ | ||
| 252 | else if (strstr (input_buffer, "No information")) | ||
| 253 | die (STATE_CRITICAL, _("No information returned by DNS server at %s\n"), dns_server); | ||
| 254 | |||
| 243 | /* Host or domain name does not exist */ | 255 | /* Host or domain name does not exist */ |
| 244 | else if (strstr (input_buffer, "Non-existent") || | 256 | else if (strstr (input_buffer, "Non-existent") || |
| 245 | strstr (input_buffer, "** server can't find") || | 257 | strstr (input_buffer, "** server can't find") || |
