1

I want to use Resolv library to resolve hostnames including 'localhost' but it lists non-IPv4 addresses also. I want to find out first IPv4 address. Looked at the library but could not find a way to do so. Does anyone know of a way to do this or should we go for other gems like Net:DNS or dnsruby?

Cœur
  • 37,241
  • 25
  • 195
  • 267
Paddy
  • 3,472
  • 5
  • 29
  • 48
  • 1
    Judging from the page you linked, can't you just do something like `ips.reject{ |ip| ip.is_a? Resolv::IPv6 }` on a list of addresses. On your linked page that would be after `ress.map { |r| r.address }` in their example. – Daniël Knippers Jul 25 '14 at 10:10

1 Answers1

3

If i right understand you can use Resolv::IPv4::Regexp and Resolv::IPv6::Regexp look example:

=> require 'resolv'
=> p Resolv.getaddress "www.ruby-lang.org"
#> "23.23.144.121"
=> ip = "23.23.144.121"
=> ip =~ Resolv::IPv4::Regex
#> 0
=> ip =~ Resolv::IPv6::Regex
#> nil
=> case ip
=> when Resolv::IPv4::Regex
=> puts "It's a valid IPv4 address."
=> when Resolv::IPv6::Regex
=> puts "It's a valid IPv6 address."
=> else
=> puts "It's not a valid IP address."
=> end
#> It's a valid IPv4 address.
Roman Kiselenko
  • 43,210
  • 9
  • 91
  • 103