Quantcast
Channel: システム開発メモ
Viewing all articles
Browse latest Browse all 100

IPアドレスを指定のプレフィックス長で変換する

$
0
0

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行になる。

python3.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

Copyright © 2017 システム開発メモ All Rights Reserved.


Viewing all articles
Browse latest Browse all 100

Trending Articles