demo/check_soa.rb in net-dns-0.8.0 vs demo/check_soa.rb in net-dns-0.9.0
- old
+ new
@@ -1,11 +1,10 @@
-#!/usr/bin/env ruby
+#!/usr/bin/env ruby
-require 'rubygems' if "#{RUBY_VERSION}" < "1.9.0"
+require 'rubygems' if RUBY_VERSION.to_s < "1.9.0"
require 'net/dns'
-
#------------------------------------------------------------------------------
# Get the domain from the command line.
#------------------------------------------------------------------------------
raise ArgumentError, "Usage: check_soa.rb domain\n" unless ARGV.size == 1
@@ -14,102 +13,92 @@
#------------------------------------------------------------------------------
# Find all the nameservers for the domain.
#------------------------------------------------------------------------------
-res = Net::DNS::Resolver.new(:defname => false, :retry => 2)
+res = Net::DNS::Resolver.new(defname: false, retry: 2)
ns_req = res.query(domain, Net::DNS::NS)
-unless ns_req and ns_req.header.anCount > 0
+unless ns_req && (ns_req.header.anCount > 0)
raise ArgumentError, "No nameservers found for domain: #{res.errorstring}"
end
-
# Send out non-recursive queries
res.recurse = false
# Do not buffer standard out
-#| = 1;
+# | = 1;
-
#------------------------------------------------------------------------------
# Check the SOA record on each nameserver.
#------------------------------------------------------------------------------
ns_req.each_nameserver do |ns|
-
#----------------------------------------------------------------------
# Set the resolver to query this nameserver.
#----------------------------------------------------------------------
-
+
# In order to lookup the IP(s) of the nameserver, we need a Resolver
# object that is set to our local, recursive nameserver. So we create
# a new object just to do that.
-
+
local_res = Net::DNS::Resolver.new
-
+
a_req = local_res.query(ns, Net::DNS::A)
-
-
- unless a_req
+
+ unless a_req
puts "Can not find address for ns: " + res.errorstring + "\n"
next
end
-
-
- a_req.each_address do |ip|
+ a_req.each_address do |ip|
#----------------------------------------------------------------------
# Ask this IP.
#----------------------------------------------------------------------
- res.nameservers=ip
-
+ res.nameservers = ip
+
print "#{ns} (#{ip}): "
-
+
#----------------------------------------------------------------------
# Get the SOA record.
#----------------------------------------------------------------------
-
+
soa_req = res.send(domain, Net::DNS::SOA, Net::DNS::IN)
-
- if soa_req == nil
+
+ if soa_req.nil?
puts res.errorstring, "\n"
next
end
-
+
#----------------------------------------------------------------------
# Is this nameserver authoritative for the domain?
#----------------------------------------------------------------------
-
- unless soa_req.header.auth?
+
+ unless soa_req.header.auth?
print "isn't authoritative for domain\n"
next
end
-
+
#----------------------------------------------------------------------
# We should have received exactly one answer.
#----------------------------------------------------------------------
-
- unless soa_req.header.anCount == 1
+
+ unless soa_req.header.anCount == 1
print "expected 1 answer, got " + soa_req.header.anCount.to_s + "\n"
next
end
-
+
#----------------------------------------------------------------------
# Did we receive an SOA record?
#----------------------------------------------------------------------
-
+
unless soa_req.answer[0].class == Net::DNS::RR::SOA
print "expected SOA, got " + Net::DNS::RR::RRTypes.to_str(soa_req.answer[0].type) + "\n"
next
end
-
+
#----------------------------------------------------------------------
# Print the serial number.
#----------------------------------------------------------------------
-
+
print "has serial number " + soa_req.answer[0].serial.to_s + "\n"
-
end
end
-
-
-