Каков самый короткий способ генерации случайного IP-адреса в Ruby?

Точно так же, как в названии говорится, разыскиваемых для целей тестирования.

Ответ 1

Вы можете использовать IPAddr

require 'ipaddr'
ipv4 = IPAddr.new(rand(2**32),Socket::AF_INET)
ipv6 = IPAddr.new(rand(2**128),Socket::AF_INET6)

Ответ 2

Если вы хотите действительно случайный IP-адрес, Array.new(4){rand(256)}.join('.') делает это

Ответ 4

ip = "%d.%d.%d.%d" % [rand(256), rand(256), rand(256), rand(256)]

Ответ 5

Я использовал это раньше, чтобы создать случайный ip, а затем проверить его с помощью Resolv

  ip = "#{rand(99)}.#{rand(100)}.#{rand(10)}.#{rand(255)}"
  begin
    if ip
      host = Resolv.new.getname(ip) 
      puts "#{c} #{real_ip.length} #{ip} #{host}" 
    end
  rescue Exception => e
    puts "FAKE #{ip}"
  end

Ответ 6

Я собирался добавить комментарий Ласса с некоторым кодом, чтобы получить любой безопасный адрес RFC1918, но пока недостаточно репутации.

Итак, если мы возьмем следующие математические результаты:

10*2**24 = 167772160
172*2**24 + 16*2**16 = 2886729728
192*2**24 + 168*2**16 = 3232235520

и вставьте их в массив, который вставляется в метод IPAddr.new

IPAddr.new([167772160, 2886729728, 3232235520].sample + rand(2**16), Socket::AF_INET)

Большинство любого пространства RF1918 генерируется. К сожалению, это всегда будет давать адреса 10.0.XX, но это хорошо для тестирования, если кто-то искал какое-то разнообразие адресов в не слишком ужасно выглядящем однострочном формате.

Основным преимуществом такого метода или метода Lass по сравнению с Faker является снижение риска случайного обложения кем-либо интернет-ресурсов, если код пытается по какой-либо причине обратиться к случайному адресу.