PythonでローカルIPアドレスを取得する方法
Python
でローカルIPアドレスを取得するには、標準ライブラリのsocket
モジュールを使います。この方法はネットワークに依存せず、ローカルのIPアドレスを確実に取得できるため、システムの情報収集に便利です。
基本的な取得方法
以下のコードは、ホスト名に対応するローカルIPアドレスを取得します。
import socket
local_ip = socket.gethostbyname(socket.gethostname())
print(local_ip)
ただし、この方法は場合によって127.0.0.1
(ループバックアドレス)を返すことがあります。
ネットワーク接続を利用する方法
より正確にローカルIPアドレスを取得するには、UDPソケットを使って、外部アドレスへの接続を試みます。実際にデータは送信されないため、ネットワークトラフィックを発生させません。
import socket
def get_local_ip():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
s.connect(('8.8.8.8', 80))
return s.getsockname()[0]
finally:
s.close()
print(get_local_ip())
この方法では、ローカルIPアドレスが確実に取得できます。
まとめ
ローカルIPアドレスの取得には、socket
モジュールが最適です。特に、gethostbyname()
やUDP接続を利用する方法が汎用的であり、ネットワーク接続の有無にかかわらず機能します。