rubydns

Run nslookup commands with Ruby to check DNS records


If I want the list of nameservers of a given domain name, I can use nslookup like that:

$ nslookup -type=NS stackoverflow.com
Server:     2a02:842a:8036:4801:5afc:20ff:fe6d:e07f
Address:    2a02:842a:8036:4801:5afc:20ff:fe6d:e07f#53

Non-authoritative answer:
stackoverflow.com   nameserver = sureena.ns.cloudflare.com.
stackoverflow.com   nameserver = damian.ns.cloudflare.com.

I'd like to do the same with Ruby. How can I do it?


Solution

  • You can use Resolv::DNS:

    Resolv::DNS.open do |dns|
      dns.getresources "stackoverflow.com", Resolv::DNS::Resource::IN::NS
    end
    
    [#<Resolv::DNS::Resource::IN::NS:0x00007ffba1fe0f20
      @name=#<Resolv::DNS::Name: sureena.ns.cloudflare.com.>,
      @ttl=86400>,
     #<Resolv::DNS::Resource::IN::NS:0x00007ffba1fe0458
      @name=#<Resolv::DNS::Name: damian.ns.cloudflare.com.>,
      @ttl=86400>]
    

    You can use the following constants: