Python で IP アドレスを取得する
Shivam Arora
2023年1月30日
-
Python で
socket.gethostname()
関数を使用してローカル IP アドレスを取得する -
Python で
socket.getsockname()
機能を使用してローカル IP アドレスを取得する -
Python で
netifaces
モジュールを使用してローカル IP アドレスを取得する
IP アドレスは、0.0.0.0 から 255.255.255.255 までの一連の数字で、各番号は 0〜255 のアドレス範囲です。ネットワーク上でデバイスを一意に識別できます。
この記事では、Python を使用してローカル IP アドレスを取得します。
Python で socket.gethostname()
関数を使用してローカル IP アドレスを取得する
Python の socket
モジュールを使用して、ネットワーク接続を作成し、ネットワークを介してメッセージを送信できます。
関数 gethostname()
は、Python が現在実行されているシステムのホスト名を返します。
例えば、
import socket
print(socket.gethostbyname(socket.gethostname()))
出力:
192.168.0.118
Python で socket.getsockname()
機能を使用してローカル IP アドレスを取得する
コンピュータデバイスにインターネットに接続されたルートがある場合は、getsockname()
関数を使用できます。IP アドレスとポートをタプルの形式で返します。
以下のコードを参照してください。
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print(s.getsockname()[0])
出力:
192.168.0.112
このメソッドは、ローカルマシンのプライマリ IP、つまりデフォルトルートを返します。
この関数を使用して、ルーティング可能なインターネットアクセスを必要としないユーザー定義関数を作成することもできます。
以下のコードを参照してください。
import socket
def extract_ip():
st = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
st.connect(("10.255.255.255", 1))
IP = st.getsockname()[0]
except Exception:
IP = "127.0.0.1"
finally:
st.close()
return IP
print(extract_ip())
出力:
192.168.0.112
上記の方法は、すべてのインターフェースで機能します。また、すべてのパブリック、プライベート、外部 IP でも機能します。この方法は、Linux、Windows、および OSX で効率的です。
Python で netifaces
モジュールを使用してローカル IP アドレスを取得する
netifaces
モジュールは、ネットワークインターフェイスとそのステータスに関する情報を提供するために使用されます。
以下に示すように、これを使用してローカルマシンの IP アドレスを取得できます。
from netifaces import interfaces, ifaddresses, AF_INET
for ifaceName in interfaces():
addresses = [
i["addr"]
for i in ifaddresses(ifaceName).setdefault(AF_INET, [{"addr": "No IP addr"}])
]
print(" ".join(addresses))
出力:
No IP addr
No IP addr
No IP addr
No IP addr
192.168.0.104
127.0.0.1