Holen Sie sich IP-Adressen in Python

Shivam Arora 30 Januar 2023
  1. Verwenden Sie die Funktion socket.gethostname(), um die lokale IP-Adresse in Python zu erhalten
  2. Verwenden Sie die Funktion socket.getsockname(), um die lokale IP-Adresse in Python zu erhalten
  3. Verwenden Sie das Modul netifaces, um die lokale IP-Adresse in Python zu erhalten
Holen Sie sich IP-Adressen in Python

IP-Adressen sind eine Ziffernfolge beginnend von 0.0.0.0 bis 255.255.255.255, wobei jede Zahl im Adressbereich von 0 bis 255 liegt. Sie kann ein Gerät über ein Netzwerk eindeutig identifizieren.

In diesem Artikel erhalten wir die lokalen IP-Adressen mit Python.

Verwenden Sie die Funktion socket.gethostname(), um die lokale IP-Adresse in Python zu erhalten

Wir können das socket-Modul in Python verwenden, um Netzwerkverbindungen herzustellen und Nachrichten über das Netzwerk zu senden.

Die Funktion gethostname() gibt den Hostnamen des Systems zurück, unter dem Python gerade ausgeführt wird.

Beispielsweise,

import socket

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

Ausgabe:

192.168.0.118

Verwenden Sie die Funktion socket.getsockname(), um die lokale IP-Adresse in Python zu erhalten

Wenn das Computergerät über eine mit dem Internet verbundene Route verfügt, können wir die Funktion getsockname() verwenden. Es gibt die IP-Adresse und den Port in Form eines Tupels zurück.

Siehe den Code unten.

import socket

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

Ausgabe:

192.168.0.112

Diese Methode gibt die primäre IP des lokalen Computers zurück, d. h. die Standardroute.

Wir können diese Funktion auch verwenden, um eine benutzerdefinierte Funktion zu erstellen, die keinen routingfähigen Internetzugang benötigt.

Siehe den Code unten.

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

Ausgabe:

192.168.0.112

Die obige Methode funktioniert auf allen Schnittstellen. Es funktioniert auch mit allen öffentlichen, privaten und externen IPs. Diese Methode ist unter Linux, Windows und OSX effizient.

Verwenden Sie das Modul netifaces, um die lokale IP-Adresse in Python zu erhalten

Das Modul netifaces dient der Auskunft über die Netzwerkschnittstellen und deren Status.

Wir können es verwenden, um die IP-Adresse des lokalen Computers wie unten gezeigt abzurufen.

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

Ausgabe:

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

Verwandter Artikel - Python Network