Получить IP-адреса в Python

Shivam Arora 30 Январь 2023 9 Июль 2021
  1. Используйте функцию socket.gethostname() для получения локального IP-адреса в Python
  2. Используйте функцию socket.getsockname() для получения локального IP-адреса в Python
  3. Используйте модуль netifaces для получения локального IP-адреса в Python
Получить IP-адреса в Python

IP-адреса представляют собой последовательность цифр от 0.0.0.0 до 255.255.255.255, каждое число находится в диапазоне адресов от 0 до 255. Он может однозначно идентифицировать устройство в сети.

В этой статье мы получим локальные IP-адреса с помощью Python.

Используйте функцию socket.gethostname() для получения локального IP-адреса в Python

Мы можем использовать модуль socket в Python для создания сетевых подключений и отправки сообщений по сети.

Функция gethostname() возвращает имя хоста системы, под которым в настоящий момент выполняется Python.

Например,

import socket
print(socket.gethostbyname(socket.gethostname()))

Выход:

192.168.0.118

Используйте функцию socket.getsockname() для получения локального IP-адреса в Python

Если компьютерное устройство имеет маршрут, подключенный к Интернету, мы можем использовать функцию 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.

Используйте модуль netifaces для получения локального IP-адреса в Python

Модуль 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

Сопутствующая статья - Python Network