Ottieni indirizzi IP in Python
-
Usa la funzione
socket.gethostname()
per ottenere l’indirizzo IP locale in Python -
Usa la funzione
socket.getsockname()
per ottenere l’indirizzo IP locale in Python -
Usa il modulo
netifaces
per ottenere l’indirizzo IP locale in Python
Gli indirizzi IP sono una sequenza di cifre a partire da 0.0.0.0 fino a 255.255.255.255, con ogni numero negli intervalli di indirizzi da 0 a 255. Può identificare in modo univoco un dispositivo su una rete.
In questo articolo, otterremo gli indirizzi IP locali utilizzando Python.
Usa la funzione socket.gethostname()
per ottenere l’indirizzo IP locale in Python
Possiamo usare il modulo socket
in Python per creare connessioni di rete e inviare messaggi attraverso la rete.
La funzione gethostname()
restituisce il nome host del sistema sotto il quale Python è attualmente in esecuzione.
Per esempio,
import socket
print(socket.gethostbyname(socket.gethostname()))
Produzione:
192.168.0.118
Usa la funzione socket.getsockname()
per ottenere l’indirizzo IP locale in Python
Se il dispositivo del computer dispone di un percorso connesso a Internet, possiamo utilizzare la funzione getsockname()
. Restituisce l’indirizzo IP e la porta sotto forma di tupla.
Vedi il codice qui sotto.
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print(s.getsockname()[0])
Produzione:
192.168.0.112
Questo metodo restituisce l’IP primario della macchina locale, ovvero il percorso predefinito.
Possiamo anche usare questa funzione per creare una funzione definita dall’utente che non necessita di alcun accesso a Internet instradabile.
Vedi il codice qui sotto.
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())
Produzione:
192.168.0.112
Il metodo sopra funziona su tutte le interfacce. Funziona anche con tutti gli IP pubblici, privati ed esterni. Questo metodo è efficiente su Linux, Windows e OSX.
Usa il modulo netifaces
per ottenere l’indirizzo IP locale in Python
Il modulo netifaces
viene utilizzato per fornire informazioni sulle interfacce di rete e sul loro stato.
Possiamo usarlo per ottenere l’indirizzo IP della macchina locale come mostrato di seguito.
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))
Produzione:
No IP addr
No IP addr
No IP addr
No IP addr
192.168.0.104
127.0.0.1