ruby - 如何从 IP 范围/子网中获取随机 IP?
问题描述
假设,我有 IP 范围:“52.93.50.128/32”我怎样才能获得该范围内的随机 IP 地址?
红宝石会更好。
解决方案
我认为使用这个 gem的这个片段应该可以工作,简单的方法是计算 IP 范围,然后选择一个新的
#!/usr/bin/env ruby
require 'ipaddr'
family = Socket::AF_INET
subnet_range = IPAddr.new("52.93.50.128/32", family).to_range
from = subnet_range.first(2).last
to = IPAddr.new(subnet_range.last.to_i - 2, family)
puts "From: #{from}"
puts "To: #{to}"
random_ip = IPAddr.new(rand(from.to_i..to.to_i), family)
puts "Random IP: #{random_ip}"