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