Этот метод возвращает «первичный» IP-адрес в локальном поле (тот, у которого есть маршрут по умолчанию).
Python 2 или 3:
import socket
def get_ip():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
# doesn't even have to be reachable
s.connect(('10.255.255.255', 1))
IP = s.getsockname()[0]
except:
IP = '127.0.0.1'
finally:
s.close()
return IP
Это возвращает единственный IP-адрес, который является основным (тот, у которого есть маршрут по умолчанию). Если вам нужно, все IP-адреса, привязанные ко всем интерфейсам (включая localhost и т. Д.), См. В этом ответе .
Если вы находитесь за брандмауэром NAT, например, у вашего Wi-Fi-бокса дома, это не покажет ваш общедоступный IP-адрес NAT, а вместо этого ваш частный IP-адрес NAT в локальной сети, который имеет маршрут по умолчанию к вашему локальному маршрутизатору WIFI; получение внешнего IP-адреса вашего Wi-Fi-маршрутизатора потребует либо запускать это на THAT-боксе, либо подключиться к внешней службе, такой как whatismyip.com/whatismyipaddress.com, которая может отражать IP-адрес ... но это полностью отличается от исходного вопроса. :)
Обновлен вызов connect () по предложению Педро в комментариях. (Если вам нужна конкретная заявка на лицензию, это общедоступный домен / бесплатный для любого использования или MIT / CC2-BY-SA для кода / контента для стека переполнения по вашему выбору.)