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
.