PythonでIpaddressモジュールを使用してIPアドレスを操作する

開示:この投稿にはアフィリエイトリンクが含まれている場合があります。つまり、リンクをクリックして購入すると、手数料が発生します。

このチュートリアルでは、あなたが使用することができる方法を学びますIPアドレス のmで仕事にoduleをIPアドレスには便利な機能や、さまざまなタスクを処理するクラスを提供していますように、多くの場合、このモジュールは、ネットワーク関連ソフトウェアの使用を開発するPythonで、ネットワークエンジニアと人々こと2つのホストが同じサブネットに属しているかどうかの確認、サブネットのすべてのホストの反復、特定のサブネットのブロードキャストアドレスの取得など、IPアドレスに関連しています。

このモジュールは組み込みであり、Python 3.3で導入されたため、何もインストールする必要はありません。したがって、Python 3.3以降を使用している場合(そして、そうしていると確信しています)、準備は完了です。

IPv4Addressクラスから始めましょう:

import ipaddress
# initialize an IPv4 Address
ip = ipaddress.IPv4Address("192.168.1.1")

これで、このIPオブジェクトは単一のIPアドレスを表し、それがグローバルIPアドレス(プライベートではない)であるかどうか、およびリンクローカルであるかどうかを確認できます。

# print True if the IP address is global
print("Is global:", ip.is_global)

# print Ture if the IP address is Link-local
print("Is link-local:", ip.is_link_local)

出力:

Is global: False
Is link-local: False

ip.is_reservedおよびip.is_multicastを使用して、このIPアドレスがそれぞれ予約済みIPアドレスおよびマルチキャストアドレスのリストに含まれているかどうかを確認することもできます。

IPアドレスで加算と減算を実行できます。

# next ip address
print(ip + 1)

# previous ip address
print(ip - 1)

あなたがでIPを追加し、それを推測1つのによって減算、それは次のIPアドレスであることを意味する1つの手段前回のIPアドレスを、ここでの出力は次のようになります。

192.168.1.2
192.168.1.0

使用可能なすべてのメソッドを網羅することはできないため、dir(ip)を記述して、使用できるさまざまなメソッドと属性を見つけてください。

IPv4Addressオブジェクトの基本を理解したところで、IPv4Networkオブジェクトの処理について詳しく見ていきましょう。

# initialize an IPv4 Network
network = ipaddress.IPv4Network("192.168.1.0/24")

今、このネットワーク・オブジェクトがIPv4ネットワークを表し、/ 24のものであるCIDR表記は、主要ことを示している24個の合計のビット32、この場合には、IPアドレスのビットがアドレスのネットワーク部分を識別するために使用されることを意味します" 192.168.1.x "はネットワーク部分(3x8 = 24ビット)であり、最後のオクテット" xxx0 "のみがホスト部分です。

このネットワークのネットワークマスクを取得できます。

# get the network mask
print("Network mask:", network.netmask)

出力:

Network mask: 255.255.255.0

ネットワークマスクは、アドレスのネットワーク部分を表現および表現するための単なる別の形式(おそらく古い)です。この場合、255.255.255.0は、1で埋められた先頭の24ビット(255はバイナリで11111111)が示すことを意味します。アドレスのネットワーク部分(/ 24表記と同じ)。

ネットワークのブロードキャストアドレスを取得する方法は次のとおりです。

# get the broadcast address
print("Broadcast address:", network.broadcast_address)

出力:

Broadcast address: 192.168.1.255

このネットワークに属するホストの数を出力します。

# print the number of IP addresses under this network
print("Number of hosts under", str(network), ":", network.num_addresses)

出力:

Number of hosts under 192.168.1.0/24 : 256

このネットワークでは、合計256のホスト(サブネットアドレスとブロードキャストアドレスを含む)を使用できます。これらすべてを反復処理する方法は次のとおりです。

# iterate over all the hosts under this network
print("Hosts under", str(network), ":")
for host in network.hosts():
    print(host)

これにより、192.168.1.1から192.168.1.254の範囲のすべての有効なホストIPアドレスが出力されます。

このネットワークのサブネットを取得することもできます。

# iterate over the subnets of this network
print("Subnets:")
for subnet in network.subnets(prefixlen_diff=2):
    print(subnet)

出力:

Subnets:
192.168.1.0/26
192.168.1.64/26
192.168.1.128/26
192.168.1.192/26

network.subnets()メソッドは、現在のサブネットを作成するために参加するサブネットをIPv4Networkオブジェクトのリストとして返します。prefixlen_diffパラメーターは、プレフィックスの長さを増やす必要がある量を示す整数です。これを2に設定して、/ 26を取得できるようにします。サブネット。

スーパーネットを入手することもできます。

# get the supernet of this network
print("Supernet:", network.supernet(prefixlen_diff=1))

これにより、現在のネットワークを含むスーパーネットが返されます。出力は次のとおりです。

Supernet: 192.168.0.0/23

最後に、ネットワークが別のネットワークとオーバーラップしているかどうかをテストできます。

# tell if this network is under (or overlaps) 192.168.0.0/16
print("Overlaps 192.168.0.0/16:", network.overlaps(ipaddress.IPv4Network("192.168.0.0/16")))

出力:

Overlaps 192.168.0.0/16: True

192.168.1.1/24サブネットは192.168.0.0/16ネットワークの下にあるため、Trueを返しました。

了解しました。このチュートリアルは終了です。公式ドキュメントでIPv4のその他の関数とクラスを確認し、ネットワークアプリケーションの開発を希望するネットワークエンジニアやPythonプログラマーにとって非常に便利なIPv6アドレスを確認してください。

リンク: https://www.thepythoncode.com/article/manipulate-ip-addresses-using-ipaddress-module-in-python

#python 

What is GEEK

Buddha Community

PythonでIpaddressモジュールを使用してIPアドレスを操作する

PythonでIpaddressモジュールを使用してIPアドレスを操作する

開示:この投稿にはアフィリエイトリンクが含まれている場合があります。つまり、リンクをクリックして購入すると、手数料が発生します。

このチュートリアルでは、あなたが使用することができる方法を学びますIPアドレス のmで仕事にoduleをIPアドレスには便利な機能や、さまざまなタスクを処理するクラスを提供していますように、多くの場合、このモジュールは、ネットワーク関連ソフトウェアの使用を開発するPythonで、ネットワークエンジニアと人々こと2つのホストが同じサブネットに属しているかどうかの確認、サブネットのすべてのホストの反復、特定のサブネットのブロードキャストアドレスの取得など、IPアドレスに関連しています。

このモジュールは組み込みであり、Python 3.3で導入されたため、何もインストールする必要はありません。したがって、Python 3.3以降を使用している場合(そして、そうしていると確信しています)、準備は完了です。

IPv4Addressクラスから始めましょう:

import ipaddress
# initialize an IPv4 Address
ip = ipaddress.IPv4Address("192.168.1.1")

これで、このIPオブジェクトは単一のIPアドレスを表し、それがグローバルIPアドレス(プライベートではない)であるかどうか、およびリンクローカルであるかどうかを確認できます。

# print True if the IP address is global
print("Is global:", ip.is_global)

# print Ture if the IP address is Link-local
print("Is link-local:", ip.is_link_local)

出力:

Is global: False
Is link-local: False

ip.is_reservedおよびip.is_multicastを使用して、このIPアドレスがそれぞれ予約済みIPアドレスおよびマルチキャストアドレスのリストに含まれているかどうかを確認することもできます。

IPアドレスで加算と減算を実行できます。

# next ip address
print(ip + 1)

# previous ip address
print(ip - 1)

あなたがでIPを追加し、それを推測1つのによって減算、それは次のIPアドレスであることを意味する1つの手段前回のIPアドレスを、ここでの出力は次のようになります。

192.168.1.2
192.168.1.0

使用可能なすべてのメソッドを網羅することはできないため、dir(ip)を記述して、使用できるさまざまなメソッドと属性を見つけてください。

IPv4Addressオブジェクトの基本を理解したところで、IPv4Networkオブジェクトの処理について詳しく見ていきましょう。

# initialize an IPv4 Network
network = ipaddress.IPv4Network("192.168.1.0/24")

今、このネットワーク・オブジェクトがIPv4ネットワークを表し、/ 24のものであるCIDR表記は、主要ことを示している24個の合計のビット32、この場合には、IPアドレスのビットがアドレスのネットワーク部分を識別するために使用されることを意味します" 192.168.1.x "はネットワーク部分(3x8 = 24ビット)であり、最後のオクテット" xxx0 "のみがホスト部分です。

このネットワークのネットワークマスクを取得できます。

# get the network mask
print("Network mask:", network.netmask)

出力:

Network mask: 255.255.255.0

ネットワークマスクは、アドレスのネットワーク部分を表現および表現するための単なる別の形式(おそらく古い)です。この場合、255.255.255.0は、1で埋められた先頭の24ビット(255はバイナリで11111111)が示すことを意味します。アドレスのネットワーク部分(/ 24表記と同じ)。

ネットワークのブロードキャストアドレスを取得する方法は次のとおりです。

# get the broadcast address
print("Broadcast address:", network.broadcast_address)

出力:

Broadcast address: 192.168.1.255

このネットワークに属するホストの数を出力します。

# print the number of IP addresses under this network
print("Number of hosts under", str(network), ":", network.num_addresses)

出力:

Number of hosts under 192.168.1.0/24 : 256

このネットワークでは、合計256のホスト(サブネットアドレスとブロードキャストアドレスを含む)を使用できます。これらすべてを反復処理する方法は次のとおりです。

# iterate over all the hosts under this network
print("Hosts under", str(network), ":")
for host in network.hosts():
    print(host)

これにより、192.168.1.1から192.168.1.254の範囲のすべての有効なホストIPアドレスが出力されます。

このネットワークのサブネットを取得することもできます。

# iterate over the subnets of this network
print("Subnets:")
for subnet in network.subnets(prefixlen_diff=2):
    print(subnet)

出力:

Subnets:
192.168.1.0/26
192.168.1.64/26
192.168.1.128/26
192.168.1.192/26

network.subnets()メソッドは、現在のサブネットを作成するために参加するサブネットをIPv4Networkオブジェクトのリストとして返します。prefixlen_diffパラメーターは、プレフィックスの長さを増やす必要がある量を示す整数です。これを2に設定して、/ 26を取得できるようにします。サブネット。

スーパーネットを入手することもできます。

# get the supernet of this network
print("Supernet:", network.supernet(prefixlen_diff=1))

これにより、現在のネットワークを含むスーパーネットが返されます。出力は次のとおりです。

Supernet: 192.168.0.0/23

最後に、ネットワークが別のネットワークとオーバーラップしているかどうかをテストできます。

# tell if this network is under (or overlaps) 192.168.0.0/16
print("Overlaps 192.168.0.0/16:", network.overlaps(ipaddress.IPv4Network("192.168.0.0/16")))

出力:

Overlaps 192.168.0.0/16: True

192.168.1.1/24サブネットは192.168.0.0/16ネットワークの下にあるため、Trueを返しました。

了解しました。このチュートリアルは終了です。公式ドキュメントでIPv4のその他の関数とクラスを確認し、ネットワークアプリケーションの開発を希望するネットワークエンジニアやPythonプログラマーにとって非常に便利なIPv6アドレスを確認してください。

リンク: https://www.thepythoncode.com/article/manipulate-ip-addresses-using-ipaddress-module-in-python

#python