Pythonの標準ライブラリを使用してローカルIPアドレスを見つける方法を以下に示します。この方法では追加のパッケージをインストールする必要はありません。
方法1: socket
モジュールを使用する
以下のコードは、デフォルトのインターフェイスで使用されるローカルIPアドレスを取得します。
import socket def get_local_ip(): try: # 一時的に外部に接続することでIPアドレスを取得 with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s: s.connect(("8.8.8.8", 80)) # GoogleのDNSサーバーを使用 return s.getsockname()[0] except Exception as e: return f"Error: {e}" local_ip = get_local_ip() print(f"Local IP Address: {local_ip}")
説明:
socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
を使用してUDPソケットを作成。- Googleの公開DNSサーバー(
8.8.8.8
)に一時的に接続して、使用されているローカルIPを取得。 - 接続は実際には行われず、ローカルインターフェイスが使用されます。
方法2: socket.gethostbyname
を使用する
システムのホスト名を使用してIPアドレスを取得する簡単な方法です。
import socket def get_local_ip_by_hostname(): try: hostname = socket.gethostname() # 現在のホスト名を取得 return socket.gethostbyname(hostname) # ホスト名からIPを取得 except Exception as e: return f"Error: {e}" local_ip = get_local_ip_by_hostname() print(f"Local IP Address: {local_ip}")
注意:
- この方法では、
127.0.0.1
(ループバックアドレス)が返される場合があります。
方法3: socket.getaddrinfo
を使用する
複数のアドレスが存在する場合に適した方法です。
import socket def get_local_ips(): try: hostname = socket.gethostname() addresses = socket.getaddrinfo(hostname, None) return [addr[4][0] for addr in addresses] except Exception as e: return f"Error: {e}" local_ips = get_local_ips() print(f"Local IP Addresses: {local_ips}")
出力例:
Local IP Addresses: ['192.168.1.100', '127.0.0.1']
注意事項
- マルチインターフェース環境(例: Wi-Fiと有線LAN)では、複数のIPアドレスが存在する場合があります。
127.0.0.1
(ループバックアドレス)はローカルIPアドレスとして認識されますが、ネットワーク上の他のデバイスからはアクセスできません。
このコードは、ローカルネットワーク内でのアドレス確認や簡単なネットワークスクリプトに役立ちます。