Ainda não necessitei disto, mas assim que esbarrei com a informação, a achei relevante suficiente para não deixar passar em banco.
Primeiro deve-se saber exatamente o que deseja, pois as duas formas de se pegar o endereço ip pelo Python, encontradas na rede, podem dar resultados bem diferentes. Vou tentar explicitá-las a seguir:
Endereço em /etc/hosts
Referência: mgltools.scripps.edu/documentation/faq/get-ip-using-python
Além, é claro, de acessar o arquivo /etc/hosts, você pode usar o módulo socket, como segue no exemplo abaixo:
>>> import socket >>> socket.gethostbyname(socket.gethostname()) '127.0.0.1' >>> socket.gethostbyname_ex(socket.gethostname()) ('khelben.forgotten', ['khelben'], ['127.0.0.1']) >>> socket.gethostbyaddr(socket.gethostname()) ('localhost', [], ['127.0.0.1'])
Embora este procedimento funcione em qualquer sistema, não é muito útil quando não se tem muita informação declarada no /etc/hosts, o que acontece quando a minha máquina pega ip dinâmicamente. Neste caso o conteúdo do /etc/hosts erá:
# For loopbacking. 127.0.0.1 localhost # This next entry is technically wrong, but good enough to get TCP/IP apps # to quit complaining that they can't verify the hostname on a loopback-only # Linux box. 127.0.0.1 khelben.forgotten khelben
Através do dispositivo de rede
Referência: http://code.activestate.com/recipes/439094/
O código a seguir funciona, desde que você conheça o dispositivo que está conectado a rede.
import socket import fcntl import struct def get_ip_address(ifname): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) return socket.inet_ntoa(fcntl.ioctl( s.fileno(), 0x8915, # SIOCGIFADDR struct.pack('256s', ifname[:15]) )[20:24])
Conclusão
Encontrei outros códigos que utilizavam comandos do Shell como ifconfig, e por isto não os coloquei aqui. Pessoalmente esperava encontrar muitas outras formas diferentes de se pegar o IP em Python, com o uso de outros módulos. Mas depois de alguns minutos de pesquisa pela rede, não vi nada muito diferente do que apresentei acima.
<< Python: Mudando o nome de um processo PyQt 03 – Diálogos com QMessageBox >>
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
No comments yet, be the first!