IPv4アドレス範囲をサブネット方式からネットマスク方式へ変換(python版)
1.概要
IP addressの範囲指定方法は、192.168.0.0/24などのセグメント記述方法と192.168.0.0-192.168.0.255とIPアドレスの範囲を指定する方法があります。今回は、セグメント記述方法をアドレス範囲記述方法へpython3のプログラムで変換します。
2.詳細
(1) 変換方法
以下のような変換ができることを目標にします。
"192.168.0.0/24" => ['192.168.0.0','192.168.0.255']
"172.16.0.0/16" => ['172.16.0.0','172.16.255.255']
"10.0.0.0/8" => ['10.0.0.0','10.255.255.255']
(2) python3の関数(ipseg.py)
すこし、考えて処理を記述しました。
def seg2rng(segment):
seg = segment.split("/")
ips = seg[0].split(".")
ipe = seg[0].split(".")
mask = int(seg[1])
wk0 = mask//8
wk1 = 2 ** ((wk0 + 1) * 8 - mask) - 1
wk2 = int(ips[wk0]) + wk1
ipe[wk0] = str(wk2)
for i in range(3,wk0,-1):
ipe[i] = "255"
return ['.'.join(ips),'.'.join(ipe)]
if __name__ == "__main__":
print(seg2rng("192.168.0.0/24"))
(3) 実行方法
python3 ipseg.py
['192.168.0.0', '192.168.0.255']
(4) 評価
エラー処理などは記述していませんが、変換処理は正しく実施されているようです。
コメント
コメントを投稿