標準添付ライブラリ ipaddr を使う。
require 'ipaddr' IPAddr.new('192.168.0.0/24').to_range => #<IPAddr: IPv4:192.168.0.0/255.255.255.255>..#<IPAddr: IPv4:192.168.0.255/255.255.255.255> IPAddr.new('192.168.0.0/24').to_range.take(5) => [#<IPAddr: IPv4:192.168.0.0/255.255.255.255>, #<IPAddr: IPv4:192.168.0.1/255.255.255.255>, #<IPAddr: IPv4:192.168.0.2/255.255.255.255>, #<IPAddr: IPv4:192.168.0.3/255.255.255.255>, #<IPAddr: IPv4:192.168.0.4/255.255.255.255>] IPAddr.new('192.168.0.0/24').to_range.to_a.take(5) => [#<IPAddr: IPv4:192.168.0.0/255.255.255.255>, #<IPAddr: IPv4:192.168.0.1/255.255.255.255>, #<IPAddr: IPv4:192.168.0.2/255.255.255.255>, #<IPAddr: IPv4:192.168.0.3/255.255.255.255>, #<IPAddr: IPv4:192.168.0.4/255.255.255.255>] IPAddr.new('192.168.0.0/24').to_range.map(&:to_s).take(5) => ["192.168.0.0", "192.168.0.1", "192.168.0.2", "192.168.0.3", "192.168.0.4"] puts IPAddr.new('192.168.0.0/24').to_range.map(&:to_s).take(5) 192.168.0.0 192.168.0.1 192.168.0.2 192.168.0.3 192.168.0.4 => nil
とはいえ毎回↑をやるのも面倒なので Web アプリを作った。/24 くらいでも結構長いリストでスクロールに時間がかかるので Scroll to bottom/Scroll to top 機能をつけた。
なお Python では標準添付ライブラリ ipaddress を使う。
>>> from ipaddress import ip_network >>> map(str, ip_network('192.168.0.0/24')) <map object at 0x1005e96d0> >>> list(map(str, ip_network('192.168.0.0/24')))[:5] ['192.168.0.0', '192.168.0.1', '192.168.0.2', '192.168.0.3', '192.168.0.4']