Obtenha endereços IP em Python
-
Use a função
socket.gethostname()
para obter o endereço IP local em Python -
Use a função
socket.getsockname()
para obter o endereço IP local em Python -
Use o módulo
netifaces
para obter o endereço IP local em Python
Os endereços IP são uma sequência de dígitos começando de 0.0.0.0 a 255.255.255.255, com cada número no intervalo de endereços de 0 a 255. Ele pode identificar exclusivamente um dispositivo em uma rede.
Neste artigo, obteremos os endereços IP locais usando Python.
Use a função socket.gethostname()
para obter o endereço IP local em Python
Podemos usar o módulo socket
em Python para criar conexões de rede e enviar mensagens pela rede.
A função gethostname()
retorna o nome do host do sistema sob o qual o Python está sendo executado.
Por exemplo,
import socket
print(socket.gethostbyname(socket.gethostname()))
Resultado:
192.168.0.118
Use a função socket.getsockname()
para obter o endereço IP local em Python
Se o dispositivo do computador tiver uma rota conectada à Internet, podemos usar a função getsockname()
. Ele retorna o endereço IP e a porta na forma de uma tupla.
Veja o código abaixo.
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print(s.getsockname()[0])
Resultado:
192.168.0.112
Este método retorna o IP primário da máquina local, ou seja, a rota padrão.
Também podemos usar essa função para criar uma função definida pelo usuário que não precisa de nenhum acesso à Internet roteável.
Veja o código abaixo.
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())
Resultado:
192.168.0.112
O método acima funciona em todas as interfaces. Também funciona com todos os IPs públicos, privados e externos. Este método é eficiente em Linux, Windows e OSX.
Use o módulo netifaces
para obter o endereço IP local em Python
O módulo netifaces
é usado para fornecer informações sobre as interfaces de rede e seu status.
Podemos usá-lo para obter o endereço IP da máquina local, conforme mostrado abaixo.
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))
Resultado:
No IP addr
No IP addr
No IP addr
No IP addr
192.168.0.104
127.0.0.1