X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=dsa-nagios-checks%2Fchecks%2Fdsa-check-soas;h=eb28d8c97517ceb883cf6c148514599a096ff63e;hb=2f4db17df6b239dbe91da46779fd0c723bfdc14d;hp=8d88915c11743afa012d58a1a308b033f96b489a;hpb=1958ea34ab7185bdf02aa33ea2970489e8c23bb4;p=mirror%2Fdsa-nagios.git diff --git a/dsa-nagios-checks/checks/dsa-check-soas b/dsa-nagios-checks/checks/dsa-check-soas index 8d88915..eb28d8c 100755 --- a/dsa-nagios-checks/checks/dsa-check-soas +++ b/dsa-nagios-checks/checks/dsa-check-soas @@ -147,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) @@ -184,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