Как получить IP-адрес физического интерфейса из интерфейса

То, что я сделал до сих пор, используя классы PyQt:

all_Addresses = QNetworkInterface.allAddresses()    #list-of-QHostAddress

for addr in all_Addresses:
    print(addr.toString())

Вывод:

172.16.0.186 - Virtual Interface IP address
192.168.10.2 - Physical interface IP address. I want this one.
127.0.0.1

Использование сокета :

import socket
print(socket.gethostbyname(socket.gethostname()))

Вывод:

172.16.0.186 - When openVPN is on
192.168.10.2 - When its off
  1. Есть ли способ различить их?
  2. Можно ли это сделать с помощью обычного Python вместо использования классов PyQt?
  3. Как мне также получить адрес IPv6?
19
задан Peter Mortensen 23 August 2011 в 17:13
поделиться