Hello,
I just wanted to pop-out if nobody already did that check_dig doesn't behave
like it should on my centos machine.
I was trying to validate the fact that my authoritative server at 80.92.90.249
resolves my website to the corresponding ip address, like this :
[root@nagg ns1]# /usr/local/nagios/libexec/check_dig -H 80.92.90.249 -l
www.dotnul.com -a 78.46.96.219 -A +tcp
DNS OK - 0.009 seconds response time (www.dotnul.com. 3600 IN A
78.46.96.219)|time=0.009035s;;;0.00
That's ok - but I noticed when I misspasted the expected return IP address,
that the check returns OK if I put the address of the queried server as
expected result.
[root@nagg ns1]# /usr/local/nagios/libexec/check_dig -H 80.92.90.249 -l
www.dotnul.com -a 80.92.90.249 -A +tcp
DNS OK - 0.006 seconds response time (;; SERVER:
80.92.90.249#53(80.92.90.249))|time=0.006368s;;;0.00
The return of the dig query is :
[root@nagg ns1]# dig www.dotnul.com @80.92.90.249 +tcp
; DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_4.2 www.dotnul.com @80.92.90.249
+tcp
;; global options: printcmd
;; Got answer:
;; -HEADER- opcode: QUERY, status: NOERROR, id: 1842
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 0
;; QUESTION SECTION:
;www.dotnul.com.IN A
;; ANSWER SECTION:
www.dotnul.com. 3600IN A 78.46.96.219
;; AUTHORITY SECTION:
dotnul.com. 86400 IN NS ether.dotnul.org.
dotnul.com. 86400 IN NS hypnos.dotnul.org.
dotnul.com. 86400 IN NS tanathos.dotnul.org.
;; Query time: 1 msec
;; SERVER: 80.92.90.249#53(80.92.90.249)
;; WHEN: Sun Apr 24 13:44:12 2011
;; MSG SIZE rcvd: 122
By having an eye on nagios-plugins-1.4.15/plugins/check_dig.c, it looks like
the following code is involved :
for(i = 0; i chld_out.lines; i++) {
/* the server is responding, we just got the host name... */
if (strstr (chld_out.line[i], ;; ANSWER SECTION:)) {
/* loop through the whole 'ANSWER SECTION' */
for(; i chld_out.lines; i++) {
/* get the host address */
if (verbose)
printf (%s\n, chld_out.line[i]);
if (strstr (chld_out.line[i], (expected_address == NULL ? query_address
: expected_address)) != NULL) {
msg = chld_out.line[i];
result = STATE_OK;
/* Translate output TAB - SPACE */
t = msg;
while ((t = strchr(t, '\t')) != NULL) *t = ' ';
break;
}
}
if (result == STATE_UNKNOWN) {
msg = (char *)_(Server not found in ANSWER SECTION);
result = STATE_WARNING;
}
/* we found the answer section, so break out of the loop */
break;
}
}
Shouldn't the command stop reading any following line beginning with ;;
after finding the ANSWER section instead of searching a match in everything
until end of chld_out ?
Kind regards,
Benjamin
--
Fulfilling the Lean Software Promise
Lean software platforms are now widely adopted and the benefits have been
demonstrated beyond question. Learn why your peers are replacing JEE
containers with lightweight application servers - and what you can gain
from the move. http://p.sf.net/sfu/vmware-sfemails
___
Nagios-users mailing list
Nagios-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nagios-users
::: Please include Nagios version, plugin version (-v) and OS when reporting
any issue.
::: Messages without supporting info will risk being sent to /dev/null