end
end
-warnings = []
-oks = []
+@warnings = []
+@oks = []
def resolve_ns(dns, domain, nameserver)
puts "Getting A record for nameserver #{nameserver} for #{domain}" if @verbose > 0
arecords = dns.getresources(nameserver, Resolv::DNS::Resource::IN::A)
- warnings << "Nameserver #{nameserver} for #{domain} has #{arecords.length} A records" if arecords.length != 1
+ @warnings << "Nameserver #{nameserver} for #{domain} has #{arecords.length} A records" if arecords.length != 1
addresses = arecords.map { |a| a.address.to_s }
puts "Addresses for nameserver #{nameserver} for #{domain}: #{addresses.join(', ')}" if @verbose > 0
return addresses
nameservernames = nameservers.collect{ |ns| ns.name.to_s }
nameservernames.each do |nameserver|
addrs = resolve_ns(dns, domain, nameserver)
- warnings << "Duplicate nameserver #{nameserver} for #{domain}" if nameserver_addresses[nameserver]
+ @warnings << "Duplicate nameserver #{nameserver} for #{domain}" if nameserver_addresses[nameserver]
nameserver_addresses[nameserver] = addrs
end
end
rescue ArgumentError
addrs = resolve_ns(dns, domain, ns)
end
- warnings << "Duplicate nameserver #{ns} for #{domain}" if nameserver_addresses[ns]
+ @warnings << "Duplicate nameserver #{ns} for #{domain}" if nameserver_addresses[ns]
nameserver_addresses[ns] = addrs
end
resolver.rd = 0
soas = resolver.getresources(domain, Resolv::DNS::Resource::IN::SOA)
rescue SystemCallError => e
- warnings << "Could not resolve #{domain} on #{nameserver}: #{e.message}"
+ @warnings << "Could not resolve #{domain} on #{nameserver}: #{e.message}"
else
resolver.close
- warnings << "Nameserver #{nameserver} for #{domain} returns #{soas.length} SOAs" if soas.length != 1
+ @warnings << "Nameserver #{nameserver} for #{domain} returns #{soas.length} SOAs" if soas.length != 1
soas.each do |soa|
puts " Nameserver #{nameserver} returns serial #{soa.serial} for #{domain}" if @verbose > 0
sn = soa.serial.to_i
end
case serial.keys.length
when 0
- warnings << "Found no serials for #{domain}"
+ @warnings << "Found no serials for #{domain}"
when 1
- oks << "#{domain} is at #{serial.keys.first}"
+ @oks << "#{domain} is at #{serial.keys.first}"
else
text = []
serial.keys.sort.each do |sn|
text << "#{sn} (#{serial[sn].join(', ')})"
end
- warnings << "Nameservers disagree on serials for #{domain}: found #{text.join(', ')}"
+ @warnings << "Nameservers disagree on serials for #{domain}: found #{text.join(', ')}"
end
}
dns.close
-if warnings.length > 0
- puts warnings.join('; ')
+if @warnings.length > 0
+ puts @warnings.join('; ')
exit NAGIOS_STATUS[:WARNING]
else
- puts oks.join('; ')
+ puts @oks.join('; ')
exit NAGIOS_STATUS[:OK]
end