Python-network-programming-python-ip-address
提供:Dev Guides
Python-IPアドレス
IPアドレス(インターネットプロトコル)は、ネットワークでアドレス割り当て機能を提供する基本的なネットワーク概念です。 pythonモジュール ipaddress は、IPアドレスを検証してIPV4およびIPV6タイプに分類するために広く使用されています。 また、IPアドレス値を比較したり、IPアドレスを操作するためのIPアドレス演算を行うためにも使用できます。
IPV4アドレスを検証する
ip_address関数は、IPV4アドレスを検証します。 値の範囲が0〜255を超える場合、エラーがスローされます。
print (ipaddress.ip_address(u'192.168.0.255'))
print (ipaddress.ip_address(u'192.168.0.256'))
上記のプログラムを実行すると、次の出力が得られます-
192.168.0.255
ValueError: u'192.168.0.256' does not appear to be an IPv4 or IPv6 address
IPV6アドレスを検証する
ip_address関数は、IPV6アドレスを検証します。 値の範囲が0を超えてffffである場合、エラーがスローされます。
print (ipaddress.ip_address(u'FFFF:9999:2:FDE:257:0:2FAE:112D'))
#invalid IPV6 address
print (ipaddress.ip_address(u'FFFF:10000:2:FDE:257:0:2FAE:112D'))
上記のプログラムを実行すると、次の出力が得られます-
ffff:9999:2:fde:257:0:2fae:112d
ValueError: u'FFFF:10000:2:FDE:257:0:2FAE:112D' does not appear to be an IPv4 or IPv6 address
IPアドレスの種類を確認する
さまざまな形式のIPアドレスを提供でき、モジュールは有効な形式を認識できるようになります。 また、IPアドレスのカテゴリを示します。
print type(ipaddress.ip_address(u'192.168.0.255'))
print type(ipaddress.ip_address(u'2001:db8::'))
print ipaddress.ip_address(u'192.168.0.255').reverse_pointer
print ipaddress.ip_network(u'192.168.0.0/28')
上記のプログラムを実行すると、次の出力が得られます-
255.0.168.192.in-addr.arpa
192.168.0.0/28
IPアドレスの比較
IPアドレスの論理比較を行い、それらが等しいかどうかを確認できます。 また、1つのIPアドレスの値が他のIPアドレスよりも大きいかどうかを比較することもできます。
print (ipaddress.IPv4Address(u'192.168.0.2') > ipaddress.IPv4Address(u'192.168.0.1'))
print (ipaddress.IPv4Address(u'192.168.0.2') == ipaddress.IPv4Address(u'192.168.0.1'))
print (ipaddress.IPv4Address(u'192.168.0.2') != ipaddress.IPv4Address(u'192.168.0.1'))
上記のプログラムを実行すると、次の出力が得られます-
True
False
True
IPアドレス算術
また、算術演算を適用してIPアドレスを操作することもできます。 IPアドレスに整数を追加または削除できます。 追加後に最後のオクテットの値が255を超えると、値に対応するために前のオクテットが増加します。 余分な値が前のオクテットのいずれにも吸収されない場合、値エラーが発生します。
print (ipaddress.IPv4Address(u'192.168.0.2')+1)
print (ipaddress.IPv4Address(u'192.168.0.253')-3)
# Increases the previous octet by value 1.
print (ipaddress.IPv4Address(u'192.168.10.253')+3)
# Throws Value error
print (ipaddress.IPv4Address(u'255.255.255.255')+1)
上記のプログラムを実行すると、次の出力が得られます-
192.168.0.3
192.168.0.250
192.168.11.0
AddressValueError: 4294967296 (>= 2**32) is not permitted as an IPv4 address