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/