Ottieni indirizzi IP in Python

Shivam Arora 30 gennaio 2023
  1. Usa la funzione socket.gethostname() per ottenere l’indirizzo IP locale in Python
  2. Usa la funzione socket.getsockname() per ottenere l’indirizzo IP locale in Python
  3. Usa il modulo netifaces per ottenere l’indirizzo IP locale in Python
Ottieni indirizzi IP 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

Articolo correlato - Python Network