El día 2 de abril de 2010 14:38, Boris Perez Canedo
<inf200...@ucf.edu.cu> escribió:
>> 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.
>>
> Ok, Gracias, me puedes enviar la otra si no te es molestia :)
>

Ninguna molestia:
def get_ip_address(ifname):
    """Returns the ip address of the interface ifname"""
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    try:
        ip= socket.inet_ntoa(fcntl.ioctl(
            s.fileno(),
            0x8915,  # SIOCGIFADDR
            struct.pack('256s', ifname[:15]) )[20:24]
            )
    except:
        ip=''
    return ip
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Reply via email to