192.168.1.0/24のようにプレフィックス24で表示されているIPアドレスの範囲をプレフィックス 26で表示してみる。

Rubyで実行するには、ipaddressライブラリをgemでinstallして使う。

$ gem install ipaddress
ipaddress (0.8.3)

$ ruby -r'ipaddress' -e'IPAddress("192.168.1.0/24").subnet(26).each{|i| puts i.to_string}'
192.168.1.0/26
192.168.1.64/26
192.168.1.128/26
192.168.1.192/26

24を26にしたので、1行で表せていたIPアドレス範囲が4行になった。25にしていれば2行になる。

Python 3.3以降が入っていれば、Pythonの標準ライブラリだけで実行できる。

import ipaddress
for n in ipaddress.ip_network("192.168.1.0/24").subnets(new_prefix=26):
    print(n)

Rubyの時はshellから実行したので、Pythonでもshellから実行すると以下のとおり。

# pattern1
$ python3 -c'import ipaddress;[print(n) for n in ipaddress.ip_network("192.168.1.0/24").subnets(new_prefix=26)]'

# pattern2
$ python3 -c'
import ipaddress
for n in ipaddress.ip_network("192.168.1.0/24").subnets(new_prefix=26):
    print(n)
'

# pattern3
$ cat <<EOS | python3 /dev/stdin
import ipaddress
for n in ipaddress.ip_network("192.168.1.0/24").subnets(new_prefix=26):
    print(n)
EOS