Created
April 13, 2015 05:12
-
-
Save jda/31ff29b664c6ccfd4c3f to your computer and use it in GitHub Desktop.
Check if nameservers for domains are correct
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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