superi

主にキャリアと金融を嗜むメディア

PythonでIP prefix(サブネットマスク)のIPを計算する


スポンサーリンク

前回、前々回でAWS、AzureのIPアドレスの範囲を取得しました。

 

www.superi.jp 

www.superi.jp

 

 

今回は前回取得したサブネットマスクに該当するIPリストを作成します。

PythonでIPを扱うにはIPyというライブラリを使うと便利です。他にもIPを扱うライブラリでipaddressというのがあるのですが、こちらは2.7系だとうまく動作しませんでした><

IPyのインストール

デフォルトでは入っていないのでインストールする必要があります。

Macでしたらpipでインストールしてください。

pip install IPy

Windowsであれば下記リンクよりダウンロードしてください。

IPyのダウンロード

サブネットマスクの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万ほどのレコード数になりました^^

PythonによるWebスクレイピング

PythonによるWebスクレイピング

 

 

Pythonチュートリアル 第3版

Pythonチュートリアル 第3版

  • 作者: Guido van Rossum,鴨澤眞夫
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2016/03/24
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る
 

参考

IPアドレスを扱うライブラリIPyを使ってみる - 偏った言語信者の垂れ流し

IPy 0.83 : Python Package Index

PythonでCSVファイルを読み書きする方法 - Python入門