首页 > 解决方案 > 如何从 IP 范围/子网中获取随机 IP?

问题描述

假设,我有 IP 范围:“52.93.50.128/32”我怎样才能获得该范围内的随机 IP 地址?

红宝石会更好。

标签: rubyipsubnet

解决方案


我认为使用这个 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}"

推荐阅读