0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Pythonでネットワークアドレスに含まれるIPアドレス一覧を得る

Posted at

はじめに

 前に「任意のIPアドレスレンジからサブネットを算出する」という記事を書きましたが、むしろ逆にネットワークアドレスに含まれるIPアドレス一覧が欲しいという場合の方が多いかも。
 例えば、192.168.1.0/24に含まれるIPアドレスの一覧が欲しいといったニーズ。

 そんな時もipaddressライブラリやnetaddrライブラリを使えば超簡単に解決できます。

 なお、少し使用目的が違うけど、このサイトでOriginal Subnet(s)にネットワークアドレスを入れて、Into:に32を入れると同じ様なことができます(結果に/32がつきますが...)。

やってみる

まずはipaddressを使った方法。

ipaddrs.py
#ライブラリ読み込み
from ipaddress import IPv4Network

#IPv4Networkクラスにネットワークアドレスを渡して、list()でIPv4Addressオブジェクトのリストを得る。
ipaddrs = list(IPv4Network('192.168.1.0/24'))

print(ipaddrs)

・結果

結果
[IPv4Address('192.168.1.0'), IPv4Address('192.168.1.1'), IPv4Address('192.168.1.2'), IPv4Address('192.168.1.3'), IPv4Address('192.168.1.4'), IPv4Address('192.168.1.5'), IPv4Address('192.168.1.6'), IPv4Address('192.168.1.7'), IPv4Address('192.168.1.8'), IPv4Address('192.168.1.9'), IPv4Address('192.168.1.10'), ...(中略)... IPv4Address('192.168.1.255')]

なんて簡単なんだこれは!

netaddrではこんな感じ。

netaddrインストール
pip install netaddr
ipaddrs1.py
from netaddr import IPNetwork

#IPNetowrkクラスにネットワークアドレスを渡して、list()でIPv4Addressオブジェクトのリストを得る。
ipaddrs = list(IPNetwork('192.168.1.0/24'))

print(ipaddrs)

結果
[IPAddress('192.168.1.0'), IPAddress('192.168.1.1'), IPAddress('192.168.1.2'), IPAddress('192.168.1.3'), IPAddress('192.168.1.4'), IPAddress('192.168.1.5'), IPAddress('192.168.1.6'), IPAddress('192.168.1.7'), IPAddress('192.168.1.8'), IPAddress('192.168.1.9'), IPAddress('192.168.1.10'), , ...(中略)...  IPAddress('192.168.1.255')]

ほぼ同じだな、こりゃ。

なお、文字列型のリストで結果が欲しい場合は

ipaddrs_str = [*(map(str, ipaddrs))]

などとしてあげれば良い。

さいごに

 このnetaddripaddressというライブラリはIPアドレスやネットワークアドレスに対する操作をするのにすごく便利なライブラリで、サブネット分割だけでなく、さまざまな操作ができます。

 これまでにいくつか記事を書きましたので、そちらもご参照ください。
 また、そのような操作をWeb上でできるサイトを提供しているので是非ご利用ください。

IP Addr Tools: IPアドレスやサブネットを操作するいくつかのツールを提供しています。

以上

参考サイト:

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?