PythonでIP prefix(サブネットマスク)のIPを計算する
前回、前々回でAWS、AzureのIPアドレスの範囲を取得しました。
今回は前回取得したサブネットマスクに該当するIPリストを作成します。
PythonでIPを扱うにはIPyというライブラリを使うと便利です。他にもIPを扱うライブラリでipaddressというのがあるのですが、こちらは2.7系だとうまく動作しませんでした><
IPyのインストール
デフォルトでは入っていないのでインストールする必要があります。
Macでしたらpipでインストールしてください。
pip install IPy
Windowsであれば下記リンクよりダウンロードしてください。
サブネットマスクのIPを取得
前提として、前回作成したIP prefixのcsvファイルは以下のようなフォーマットです。
region |
ip_prefix |
service |
us-east-1 |
23.20.0.0/14 |
AMAZON |
IPy.IPを利用することでサブネットマスクを扱うことが可能です。
import IPy
import csv#上記形式のcsvを読み込み
with open('ip_prefix_aws.csv', 'r') as read_file:
reader = csv.reader(read_file)
header = next(reader)
#書き込み用csvファイル
with open('ip_list_aws.csv', 'w') as write_file:
writer = csv.writer(write_file)
#ip_prefixの数だけループ
for row in reader:
list = row#ip_prefixをIPとして読み込み
ip = IPy.IP(list[1])#サブネットマスクの範囲に含まれるIPを出力、csvに書き込み
for x in ip:
writer.writerow([list[0]] + [x] + [list[2]])
AWSとAzure合わせて約2,500万ほどのレコード数になりました^^
参考
IPアドレスを扱うライブラリIPyを使ってみる - 偏った言語信者の垂れ流し