X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=dsa-nagios-checks%2Fchecks%2Fdsa-check-soas;h=eb28d8c97517ceb883cf6c148514599a096ff63e;hb=8df4228d33863c53be45ce92fbc81619695420c5;hp=80f4924a2488617ac311133e75dcfbf70c4bfc08;hpb=352bbe893e3eb3fcfecc653e50c09f8b8e88d0d7;p=mirror%2Fdsa-nagios.git diff --git a/dsa-nagios-checks/checks/dsa-check-soas b/dsa-nagios-checks/checks/dsa-check-soas index 80f4924..eb28d8c 100755 --- a/dsa-nagios-checks/checks/dsa-check-soas +++ b/dsa-nagios-checks/checks/dsa-check-soas @@ -98,7 +98,6 @@ class DSADNS < Resolv::DNS begin @config.resolv(name) {|candidate, tout, nameserver, port| msg = Message.new -puts @rd msg.rd = @rd msg.add_question(candidate, typeclass) unless sender = senders[[candidate, nameserver, port]] @@ -148,7 +147,7 @@ end dns = Resolv::DNS.new ARGV.each{ |domain| - serial = [] + serial = {} nameserver_addresses = {} if @check_soa_nameservers nameservers = dns.getresources(domain, Resolv::DNS::Resource::IN::NS) @@ -185,18 +184,27 @@ ARGV.each{ |domain| 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 - serial << soa.serial unless serial.include? soa.serial + sn = soa.serial.to_i + if serial.has_key? sn then + serial[sn] << nameserver + else + serial[sn] = [nameserver] + end end end end end - case serial.length + case serial.keys.length when 0 warnings << "Found no serials for #{domain}" when 1 - oks << "#{domain} is at #{serial.first}" + oks << "#{domain} is at #{serial.keys.first}" else - warnings << "Nameservers disagree on serials for #{domain}: found #{serial.join(', ')}" if serial.length != 1 + text = [] + serial.keys.sort.each do |sn| + text << "#{sn} (#{serial[sn].join(', ')})" + end + warnings << "Nameservers disagree on serials for #{domain}: found #{text.join(', ')}" end } dns.close