2010-05-11 14 views

Odpowiedz

25

Można użyć ipaddr

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

Należy pamiętać, że może to generować adresy zaczynające się od 0, co z całą pewnością (RFC3330) jest nieprawidłowe. – mdrozdziel

+0

od startu 0s nie są idealne, chciałbym rec odpowiedzi tablicy poniżej –

+1

To jest po bezpiecznej stronie, to generuje prawidłowe adresy IPv4 z prywatnej podsieci ** 10.xxx **: 'IPAddr.new (10 * 2 ** 24 + rand (2 ** 24), Socket :: AF_INET) ' – Laas

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

To nie zawsze wygeneruje poprawny adres. (W rzadkich przypadkach może generować '0.0.0.0' lub' 255.255.255.255', które nie są poprawnymi adresami) –

+0

Czy te dwa adresy łamią jakąś zasadę? Wyglądają mi dobrze. Ponieważ PO tylko zadał niejasne pytanie, te dwie są tak samo dobre jak inne. – dbasnett

+2

Jeśli dobrze pamiętam, są to dobre numery IP, ale są wcześniej przypisane do transmisji sieciowych. Żaden komputer nie może mieć adresu IP 0.0.0.0 lub 255.255.255.255, ale może odpowiadać na żądania dotyczące tych numerów. Jeśli ma to sens w aplikacji, można z nich korzystać. Więcej informacji można znaleźć na stronie http://en.wikipedia.org/wiki/Broadcast_address. –

17

Jeśli chcesz naprawdę losowy adres IP, Array.new(4){rand(256)}.join('.') robi

3

Użyłem tego wcześniej, aby wygenerować losowy ip następnie zatwierdzić ją 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 
8

Proponuję skorzystać z Fakera

https://github.com/stympy/faker#fakerinternet

Faker::Internet.ip_v4_address #=> "24.29.18.175" 
+0

to jest całkiem niesamowite, faktycznie .... jest aktywne i utrzymywane. W ten sposób ma zarówno IPv4 i 6 oraz URI. – Angela

+0

Chociaż nie znam się dobrze na bibliotece, polecam też "Faker". Głównym powodem jest to, że ta biblioteka wydaje się być utworzona dla twojego przypadku użycia. [The docs] (https://github.com/stympy/faker#fakerinternet) sugerują również, że obsługuje on również specjalne adresy IP. – Aaron

Powiązane problemy