Obtener direcciones IP en Python

Shivam Arora 30 enero 2023
  1. Utilice la función socket.gethostname() para obtener la dirección IP local en Python
  2. Utilice la función socket.getsockname() para obtener la dirección IP local en Python
  3. Utilice el módulo netifaces para obtener la dirección IP local en Python
Obtener direcciones IP en Python

Las direcciones IP son una secuencia de dígitos que comienza desde 0.0.0.0 hasta 255.255.255.255, con cada número en los rangos de direcciones de 0 a 255. Puede identificar de forma única un dispositivo en una red.

En este artículo, obtendremos las direcciones IP locales usando Python.

Utilice la función socket.gethostname() para obtener la dirección IP local en Python

Podemos usar el módulo socket en Python para crear conexiones de red y enviar mensajes a través de la red.

La función gethostname() devuelve el nombre de host del sistema bajo el cual Python se está ejecutando actualmente.

Por ejemplo,

import socket

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

Producción :

192.168.0.118

Utilice la función socket.getsockname() para obtener la dirección IP local en Python

Si el dispositivo de la computadora tiene una ruta conectada a Internet, entonces podemos usar la función getsockname(). Devuelve la dirección IP y el puerto en forma de tupla.

Vea el código a continuación.

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print(s.getsockname()[0])

Producción :

192.168.0.112

Este método devuelve la IP principal de la máquina local, es decir, la ruta predeterminada.

También podemos usar esta función para crear una función definida por el usuario que no necesita ningún acceso a Internet enrutable.

Vea el código a continuación.

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())

Producción :

192.168.0.112

El método anterior funciona en todas las interfaces. También funciona con todas las direcciones IP públicas, privadas y externas. Este método es eficaz en Linux, Windows y OSX.

Utilice el módulo netifaces para obtener la dirección IP local en Python

El módulo netifaces se utiliza para proporcionar información sobre las interfaces de red y su estado.

Podemos usarlo para obtener la dirección IP de la máquina local como se muestra a continuación.

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))

Producción :

No IP addr
No IP addr
No IP addr
No IP addr
192.168.0.104
127.0.0.1

Artículo relacionado - Python Network