30 lines
702 B
Ruby
30 lines
702 B
Ruby
|
require 'resolv'
|
||
|
require 'resolv-replace'
|
||
|
|
||
|
|
||
|
def multiple_lookup(*names)
|
||
|
dns = Resolv::DNS.new
|
||
|
results = {}
|
||
|
threads = []
|
||
|
names.each do |name|
|
||
|
threads << Thread.new(name) do |name|
|
||
|
begin
|
||
|
dns.each_address(name) { |a| (results[name] ||= []) << a }
|
||
|
rescue Resolv::ResolvError
|
||
|
results[name] = nil
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
threads.each { |t| t.join }
|
||
|
return results
|
||
|
end
|
||
|
|
||
|
|
||
|
domains = ("a".."z").collect { |l| l + '.com' }
|
||
|
multiple_lookup(*domains).sort.each do |name, addresses|
|
||
|
if addresses
|
||
|
puts "#{name}: #{addresses.size} " + \
|
||
|
"address#{addresses.size == 1 ? "" : "es"}"
|
||
|
end
|
||
|
end
|