Proprio come dice il titolo, voluto a scopo di test.Qual è il modo più breve per generare un indirizzo IP casuale in Ruby?
Grazie!
Proprio come dice il titolo, voluto a scopo di test.Qual è il modo più breve per generare un indirizzo IP casuale in Ruby?
Grazie!
Si potrebbe utilizzare IPAddr
require 'ipaddr'
ipv4 = IPAddr.new(rand(2**32),Socket::AF_INET)
ipv6 = IPAddr.new(rand(2**128),Socket::AF_INET6)
ip = "%d.%d.%d.%d" % [rand(256), rand(256), rand(256), rand(256)]
Che non genererà sempre un indirizzo valido. (In rare occasioni, potrebbe generare '0.0.0.0' o' 255.255.255.255' che non sono indirizzi validi) –
Questi due indirizzi infrangono qualche regola? Mi stanno bene. Dal momento che l'OP ha solo posto una domanda vaga, questi due sono ugualmente buoni come altri. – dbasnett
Se ricordo bene, sono buoni numeri IP ma sono pre-assegnati alle trasmissioni di rete. Nessuna macchina può avere un IP di 0.0.0.0 o 255.255.255.255, ma possono rispondere alle richieste a quei numeri. Se ciò ha senso in un'applicazione, allora è OK usarli. Vedi http://en.wikipedia.org/wiki/Broadcast_address per maggiori informazioni. –
Se si desidera un indirizzo IP realmente casuale, Array.new(4){rand(256)}.join('.')
lo fa
Ho usato questo prima di generare un IP casuale quindi convalidare con 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
io suggerirei di usare Faker
012.https://github.com/stympy/faker#fakerinternet
Faker::Internet.ip_v4_address #=> "24.29.18.175"
questo è davvero fantastico, in realtà .... è attivo e mantenuto. Come quello che ha sia IPv4 e 6 e URI. – Angela
Anche se non conosco bene la libreria, consiglierei anche 'Faker'. La mia ragione principale è che questa libreria sembra essere stata creata per il tuo caso d'uso. [I documenti] (https://github.com/stympy/faker#fakerinternet) suggeriscono anche che gestisce meglio anche gli indirizzi IP speciali. – Aaron
Attenzione, questo può generare indirizzi che iniziano con 0, che con tutti i mezzi (RFC3330) non è valido. – mdrozdziel
dal momento che gli 0 iniziali non sono ideali, vorrei inserire la risposta dell'array sotto –
Per sicurezza, questo genera indirizzi IPv4 validi dalla sottorete privata ** 10.xxx **: 'IPAddr.new (10 * 2 ** 24 + rand (2 ** 24), Socket :: AF_INET) ' – Laas