Skip to content

Instantly share code, notes, and snippets.

@jda
Created April 13, 2015 05:12
Show Gist options
  • Save jda/31ff29b664c6ccfd4c3f to your computer and use it in GitHub Desktop.
Save jda/31ff29b664c6ccfd4c3f to your computer and use it in GitHub Desktop.
Check if nameservers for domains are correct
#!/usr/bin/env ruby
# Check if nameservers for domains are correct
# List of domains goes in on STDIN.
# comma seperated list of nameservers as arg
interval = 25
require 'rubygems'
require 'whois'
if ARGV.empty?
print "Usage: cat list-of-domains.txt | "
puts "verify-nameservers.rb ns1.example.net,ns2.example.net"
exit 1
end
nameservers = ARGV.shift.split(',')
c = Whois::Client.new
ARGF.each_line do |domain|
domain.chomp!
begin
r = c.lookup(domain)
rescue Whois::ServerNotFound
print domain + " no whois server found?" + "\n"
next
rescue
print domain + " unknown error" + "\n"
next
end
if r.available?
print domain + " not registered?" + "\n"
next
end
# check if wrong number of nameservers
if r.nameservers.length != nameservers.length
print domain + " nameservers " + r.nameservers.join(", ") + "\n"
next
end
# check nameservers, case insensitive but order matters
badns = false
nameservers.each_with_index do |ns, idx|
domns = r.nameservers[idx]
if not ns.casecmp domns.name
badns = true
end
end
if badns == true
print domain + " nameservers " + r.nameservers.join(", ") + "\n"
end
sleep(interval) # because PIR rate limiting
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment