Obtenir des adresses IP en Python

Shivam Arora 30 janvier 2023
  1. Utilisez la fonction socket.gethostname() pour obtenir l’adresse IP locale en Python
  2. Utilisez la fonction socket.getsockname() pour obtenir l’adresse IP locale en Python
  3. Utilisez le module netifaces pour obtenir l’adresse IP locale en Python
Obtenir des adresses IP en Python

Les adresses IP sont une séquence de chiffres allant de 0.0.0.0 à 255.255.255.255, avec chaque numéro dans les plages d’adresses de 0 à 255. Il peut identifier de manière unique un périphérique sur un réseau.

Dans cet article, nous obtiendrons les adresses IP locales en utilisant Python.

Utilisez la fonction socket.gethostname() pour obtenir l’adresse IP locale en Python

Nous pouvons utiliser le module socket en Python pour créer des connexions réseau et envoyer des messages à travers le réseau.

La fonction gethostname() renvoie le nom d’hôte du système sous lequel Python est actuellement exécuté.

Par example,

import socket

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

Production:

192.168.0.118

Utilisez la fonction socket.getsockname() pour obtenir l’adresse IP locale en Python

Si le périphérique informatique a une route connectée à Internet, alors nous pouvons utiliser la fonction getsockname(). Il renvoie l’adresse IP et le port sous la forme d’un tuple.

Voir le code ci-dessous.

import socket

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

Production:

192.168.0.112

Cette méthode renvoie l’adresse IP principale de la machine locale, c’est-à-dire la route par défaut.

Nous pouvons également utiliser cette fonction pour créer une fonction définie par l’utilisateur qui ne nécessite aucun accès Internet routable.

Voir le code ci-dessous.

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

Production:

192.168.0.112

La méthode ci-dessus fonctionne sur toutes les interfaces. Il fonctionne également avec toutes les IP publiques, privées et externes. Cette méthode est efficace sous Linux, Windows et OSX.

Utilisez le module netifaces pour obtenir l’adresse IP locale en Python

Le module netifaces permet de renseigner les interfaces réseaux et leur état.

Nous pouvons l’utiliser pour obtenir l’adresse IP de la machine locale, comme indiqué ci-dessous.

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

Production:

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

Article connexe - Python Network