Вы можете использовать netifaces .это упростит вашу задачу
import netifaces
netifaces.interfaces()
Вывод будет список всех сопряженных
['lo0', 'gif0', 'stf0', 'en0', 'en1', 'fw0']
Вы можете углубиться в это, например, так -
netifaces.ifaddresses('en0')
Вывод будет:
{18: [{'addr': '00:12:34:56:78:9a'}], 2: [{'broadcast':
'10.255.255.255', 'netmask': '255.0.0.0', 'addr': '10.16.1.4'}],
30: [{'netmask': 'ffff:ffff:ffff:ffff::', 'addr':
'fe80::123:4567:89ab:cdef%en0'}]}
найти адрес интерфейса
netifaces.ifaddresses('en0')[netifaces.AF_LINK]
Вывод
[{'addr': '00:12:34:56:78:9a'}]
Вы можете перебрать весь интерфейс и получить IP-адрес, например, так -
for interface in netifaces.interfaces():
... for link in netifaces.ifaddresses(interface)[netifaces.AF_INET]:
... print link['addr']