Pythonでip範囲をCIDR表記に変換

1065 ワード

ip範囲をCIDR表記に変換したい

  • 「このip範囲でアクセス許可設定してくださいx.x.x.x-y.y.y.y」って依頼されることありますよね?私も人に依頼するときは計算したくないのでそうやって依頼します
  • でも実際システムに設定する時はx.x.x.x/30 みたいにサブネットマスクして書くじゃないですか?
  • ググればブラウザで動く計算ツールが出てきますけど、社内システムのipアドレスだったりすると、信頼して良いサイトか判断するのも面倒なので一応ローカルで計算したいなーってなりますよね?

Python にやらせよう

import ipaddress
[ipaddr for ipaddr in ipaddress.summarize_address_range(
   ipaddress.IPv4Address('192.0.2.0'),
   ipaddress.IPv4Address('192.0.2.130'))]

結果

[IPv4Network('192.0.2.0/25'), IPv4Network('192.0.2.128/31'), IPv4Network('192.0.2.130/32')]