Поиск локальных IP-адресов с использованием Python's stdlib - PullRequest
480 голосов
/ 03 октября 2008

Как найти локальные IP-адреса (например, 192.168.x.x или 10.0.x.x) на платформе Python независимо и с использованием только стандартной библиотеки?

Ответы [ 43 ]

0 голосов
/ 16 июня 2017
from netifaces import interfaces, ifaddresses, AF_INET
iplist = [ifaddresses(face)[AF_INET][0]["addr"] for face in interfaces() if AF_INET in ifaddresses(face)]
print(iplist)
['10.8.0.2', '192.168.1.10', '127.0.0.1']
0 голосов
/ 06 декабря 2016

Это очень похоже на ранее опубликованные ответы, но я не смог найти ни одного с таким использованием звонков. Это то, что я использую для ipv4. Для ipv6 измените "." в ':' в

import socket
print next(i[4][0] for i in socket.getaddrinfo(
    socket.gethostname(), 80) if '127.' not in i[4][0] and '.' in i[4][0]);"
0 голосов
/ 07 августа 2016

Я согласился на использование сервиса и / или API ipfy : https://www.ipify.org.

#!/usr/bin/env python3
from urllib.request import urlopen


def public_ip():
    data = urlopen('https://api.ipify.org').read()
    return str(data, encoding='utf-8')


print(public_ip())

Ответ также можно получить в форматах JSON и JSONP .

На Github есть ipify Библиотека Python .

...