2010-05-11 8 views

Antwort

25

zu erzeugen, könnte Sie IPAddr verwenden

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

Vorsicht, das kann Adressen erzeugen, die mit 0 beginnen, was auf jeden Fall (RFC3330) ungültig ist. – mdrozdziel

+0

Da 0s nicht ideal sind, würde ich die Array-Antwort unter –

+1

empfan- gen. Um auf der sicheren Seite zu sein, generiert dies gültige IPv4-Adressen aus dem ** 10.xxx ** privaten Subnetz: IPAddr.new (10 * 2 **) 24 + rand (2 ** 24), Sockel :: AF_INET) ' – Laas

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

Das wird nicht immer eine gültige Adresse generieren. (In seltenen Fällen könnte es "0.0.0.0" oder "255.255.255.255" generieren, die keine gültigen Adressen sind) –

+0

Brechen diese beiden Adressen eine Regel? Sie sehen OK für mich aus. Da das OP nur eine vage Frage stellte, sind diese beiden genauso gut wie alle anderen. – dbasnett

+2

Wenn ich mich recht erinnere, sind sie gute IP-Nummern, sind aber Netzwerk-Broadcasts vor-zugewiesen. Kein Computer kann eine IP-Adresse von 0.0.0.0 oder 255.255.255.255 haben, aber sie können auf Anforderungen an diese Nummern antworten. Wenn das in einer Anwendung Sinn macht, ist es in Ordnung, sie zu verwenden. Weitere Informationen finden Sie unter http://en.wikipedia.org/wiki/Broadcast_address. –

17

Wenn Sie eine wirklich zufällige IP-Adresse möchten, Array.new(4){rand(256)}.join('.') tut es

3

Ich habe dies benutzt, bevor eine zufällige IP-Validierung es dann mit 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

würde ich vorschlagen, Faker mit

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

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

das ist ziemlich genial, eigentlich .... ist es aktiv und gepflegt. So hat es sowohl IPv4 und 6 als auch URI. – Angela

+0

Obwohl ich die Bibliothek nicht gut kenne, würde ich 'Faker' auch empfehlen. Mein Hauptgrund ist, dass diese Bibliothek anscheinend für Ihren Anwendungsfall _created_ ist. [Die Dokumente] (https://github.com/stympy/faker#fakerinternet) schlagen auch vor, dass es spezielle IP-Adressen auch besser handhabt. – Aaron

Verwandte Themen