[Python-es] Cómo determinar mi ip?

José Luis Redrejo Rodríguez jredrejo en debian.org
Vie Abr 2 14:19:26 CEST 2010


Yo preparé dos funciones para esto: una que me da la ip pasándole el
interfaz de red, y otra que me da la ip pasándole una ip a la que
quiero acceder. Con lo que si hay un interfaz de red para salir a
internet y otro para la red local, puedo usar el que necesite. Para
salir a internet, le paso por defecto el valor de uno de los DNS root
mundiales, pero valdría cualquier ip que sepas que está en internet.

def get_ip_inet_address(connection_ip='198.41.0.4'):
    """Returns the ip address of the interface used to connect to the given ip

    198.41.0.4 is a DNS ROOT Server, so it's the default value to
connect to Internet
    """
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.connect((connection_ip, 0))
    inet_address= s.getsockname()[0]
    s.close()
    logging.getLogger().debug("Inet Address:" + inet_address)
    return inet_address


Si necesitas la que calcula la ip de un interfaz, dímelo.

Saludos.


El día 2 de abril de 2010 13:44, Arnau Sanchez <pyarnau en gmail.com> escribió:
> On 02/04/10 13:39, Oswaldo Hernández wrote:
>
>> Que resultado te da si ejecutas:
>> socket.gethostbyname_ex('latitude')
>
> In [2]:socket.gethostbyname_ex('latitude')
> Out[2]:('localhost', ['latitude'], ['127.0.0.1'])
>
> Supongo que tendrá algo que ver con que:
>
> # /etc/hosts
> 127.0.0.1 localhost latitude
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>



Más información sobre la lista de distribución Python-es