2015-10-13 123 views
0

有没有一种可能的方式来获取域的主机名在ruby中?在ruby中获取域名主机名

例如:

$ host api.heroku.com 
api.heroku.com is an alias for api-default.herokussl.com. 
api-default.herokussl.com is an alias for elb027033-298234319.us-east-1.elb.amazonaws.com. 
elb027033-298234319.us-east-1.elb.amazonaws.com has address 23.23.76.65 
elb027033-298234319.us-east-1.elb.amazonaws.com has address 23.21.240.208 
elb027033-298234319.us-east-1.elb.amazonaws.com has address 107.22.242.236 

主机将是最好的例子,因为它也将展示如果域/子域指向或另一台主机像amazonAWS等

+0

['Resolv'](http://ruby-doc.org/stdlib-1.9.2/libdoc/resolv/rdoc/Resolv.html) - 该文档甚至有一些很好的例子。 – Amadan

+0

哪些文档?我使用Resolv尝试了一些东西,但没有像从ruby执行'host domain.com'命令那样有用。 – user3610137

回答

1

不是有用的红宝石

我不敢苟同执行host domain.com命令(但它确实涉及知道你想要什么数据,以及如何DNS的作品)。

require 'resolv' 

def host(address) 
    Resolv::DNS.open do |dns| 
    loop do 
     ress = dns.getresources address, Resolv::DNS::Resource::IN::CNAME 
     break if ress.empty? 
     canonical_name = ress.first.name.to_s 
     puts "#{address} is an alias for #{canonical_name}" 
     address = canonical_name 
    end 

    ress = dns.getresources address, Resolv::DNS::Resource::IN::A 
    addresses = ress.each do |r| 
     puts "#{address} has address #{r.address.to_s}" 
    end 
    end 
    return 
end 

host("api.heroku.com") 
+0

哇!这正是我一直在寻找的!谢谢。 – user3610137