Python: как узнать IP локальной сети?

Python: как узнать IP локальной сети? - коротко

Для получения IP-адреса локальной сети в Python можно использовать библиотеку socket. Пример кода:

import socket

print(socket.inet_aton(socket.gethostbyname(socket.gethostname())))

Python: как узнать IP локальной сети? - развернуто

Для определения IP-адреса локальной сети с использованием Python можно воспользоваться несколькими методами. Один из наиболее распространенных способов - использование библиотеки socket, которая предоставляет интерфейс для работы с сетевыми протоколами и сокетными операциями.

Метод 1: Использование библиотеки socket

import socket

def get_local_ip():

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

try:

# Получаем локальный IP-адрес

ip = socket.inet_ntoa(s.getsockname()[0])

finally:

s.close()

return ip

print("Локальный IP-адрес:", get_local_ip())

Метод 2: Использование библиотеки requests

Если необходимо получить IP-адрес, используемый внешним сервисом, можно воспользоваться библиотекой requests. Для этого потребуется выполнить HTTP-запрос к удаленному серверу и распарсить ответ.

import requests

def get_external_ip():

response = requests.get('https://api.ipify.org?format=json')

data = response.json()

return data['ip']

print("Внешний IP-адрес:", get_external_ip())

Метод 3: Использование библиотеки ifaddr

Библиотека ifaddr позволяет получить список всех сетевых интерфейсов и их соответствующих IP-адресов. Этот метод более универсален, так как учитывает возможность наличия нескольких сетевых интерфейсов на устройстве.

import ifaddr

def get_all_ips():

addrs = ifaddr.get_host_addresses()

ips = [str(ip) for ip in addrs]

return ips

print("Список всех IP-адресов:", get_all_ips())

Выбор метода

Выбор метода зависит от конкретных требований к решению. Если необходимо получить только один локальный IP-адрес, наиболее простым и быстрым способом будет использование библиотеки socket. Для более детализированного анализа сетевых интерфейсов рекомендуется использовать библиотеку ifaddr. В случае необходимости получения внешнего IP-адреса, используемого внешним сервисом, наиболее подходящим будет метод с использованием библиотеки requests.

Заключение

Каждый из предложенных методов имеет свои преимущества и может быть использован в зависимости от конкретной задачи. Для большинства приложений, требующих определения локального IP-адреса, наиболее подходящим будет использование библиотеки socket.