Obtenir des adresses IP en Python
-
Utilisez la fonction
socket.gethostname()
pour obtenir l’adresse IP locale en Python -
Utilisez la fonction
socket.getsockname()
pour obtenir l’adresse IP locale en Python -
Utilisez le module
netifaces
pour obtenir l’adresse IP locale 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