在 ruby 中获取域名主机名

Getting domain host name in 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

host 将是最好的例子,因为它还会显示 domain/subdomain 是否指向另一个主机,如 amazonAWS 等

not as useful as executing host domain.com command from ruby

我不敢苟同...(但这确实涉及了解您想要的数据以及 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")