簡體   English   中英

在Ruby中創建IP地址范圍

[英]Creating IP address range in Ruby

假設我們在文本文件中有一個IP地址/阻止列表:

123.123.0.0
111.111.111.0
101.101.0.111

現在,我想打印出所有可能的IP地址。 例如,對於上面列表中的第一項:

123.123.0.0
123.123.0.1
123.123.0.2
123.123.0.3
[...]
123.123.0.255
123.123.1.1
123.123.1.2
[...]
123.123.255.255

我不需要讀寫文件等方面的幫助。只是想不到如何打印出該塊/范圍內的每個可能的IP地址。 是否可以做一個塊,並用x代替0並保持| x |並在1-255之間打印x?

require 'ipaddr'
puts IPAddr.new("123.123.0.0/16").to_range.to_a

如果您絕對必須在問題中使用含糊的“ IP定義范圍”數據,

require 'ipaddr'
STDIN.read.each_line do |line|
    num_zeroes = line[/(\.0)*$/].length / 2
    ip_range_string = "#{line.chomp}/#{32 - num_zeroes * 8}"
    puts IPAddr.new(ip_range_string).to_range.to_a
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM