Uli Martens: dsa-check-soas: Add --no-soa-ns flag.
authorPeter Palfrader <peter@palfrader.org>
Sat, 21 Apr 2012 07:54:26 +0000 (09:54 +0200)
committerPeter Palfrader <peter@palfrader.org>
Sat, 21 Apr 2012 07:54:26 +0000 (09:54 +0200)
dsa-nagios-checks/checks/dsa-check-soas
dsa-nagios-checks/debian/changelog

index f93c7af..3b8e546 100755 (executable)
@@ -1,6 +1,7 @@
 #!/usr/bin/ruby
 
 # Copyright 2006, 2012 Peter Palfrader
+#           2012  Uli Martens
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
@@ -29,6 +30,7 @@ require 'yaml'
 NAGIOS_STATUS = { :OK => 0, :WARNING => 1, :CRITICAL => 2, :UNKNOWN => -1 };
 @verbose = 0;
 @additional_nameservers = []
+@check_soa_nameservers = true;
 
 def show_help(parser, code=0, io=STDOUT)
   program_name = File.basename($0, '.*')
@@ -37,13 +39,20 @@ def show_help(parser, code=0, io=STDOUT)
   exit(code)
 end
 ARGV.options do |opts|
-        opts.on_tail("-h", "--help" , "Display this help screen")                { show_help(opts) }
-        opts.on("-v", "--verbose"   , String, "Be verbose")                      { @verbose += 1 }
-        opts.on("-a", "--add=HOST"  , String, "Also check SOA on <nameserver>")  { |val| @additional_nameservers << val }
+        opts.on_tail("-h", "--help" , "Display this help screen")                               { show_help(opts) }
+        opts.on("-v", "--verbose"   , String, "Be verbose")                                     { @verbose += 1 }
+        opts.on("-a", "--add=HOST"  , String, "Also check SOA on <nameserver>")                 { |val| @additional_nameservers << val }
+        opts.on("-n", "--no-soa-ns" , String, "Don't query SOA record for list of nameservers") { @check_soa_nameservers = false }
         opts.parse!
 end
 show_help(ARGV.options, 1, STDERR) if ARGV.length == 0
 
+if @additional_nameservers.count <= 1 and not @check_soa_nameservers
+       program_name = File.basename($0, '.*')
+       STDERR.puts "#{program_name}: Only know about #{@additional_nameservers.count} nameserver(s) and --no-soa-ns specified.  I want at least two."
+       exit(1)
+end
+
 warnings = []
 oks = []
 
@@ -59,13 +68,15 @@ end
 dns = Resolv::DNS.new
 ARGV.each{ |domain|
        serial = []
-       nameservers = dns.getresources(domain, Resolv::DNS::Resource::IN::NS)
-       nameservernames = nameservers.collect{ |ns| ns.name.to_s }
        nameserver_addresses = {}
-       nameservernames.each do |nameserver|
-               addrs = resolve_ns(dns, domain, nameserver)
-               warnings << "Duplicate nameserver #{nameserver} for #{domain}" if nameserver_addresses[nameserver]
-               nameserver_addresses[nameserver] = addrs
+       if @check_soa_nameservers
+               nameservers = dns.getresources(domain, Resolv::DNS::Resource::IN::NS)
+               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]
+                       nameserver_addresses[nameserver] = addrs
+               end
        end
        @additional_nameservers.each do |ns|
                begin
index 0b215ff..84decf9 100644 (file)
@@ -20,7 +20,10 @@ dsa-nagios-checks (9X) Xnstable; urgency=low
   * dsa-check-udldap-freshness: check new last_update.trace if it
     exists instead of /var/lib/misc/thishost/passwd.{db,tdb}.
 
- -- Peter Palfrader <weasel@debian.org>  Wed, 04 Apr 2012 01:05:01 +0200
+  [ Uli Martens ]
+  * dsa-check-soas: Add --no-soa-ns flag.
+
+ -- Peter Palfrader <weasel@debian.org>  Sat, 21 Apr 2012 09:54:00 +0200
 
 dsa-nagios-checks (92.1) unstable; urgency=low