Первая ошибка означает, что нет интерфейса с именем eth0
.Действительно, это общее имя интерфейса в Linux, но не в MacOS.
Вторая ошибка означает, что вы пытаетесь извлечь поле, которое не существует.Есть информация о en0
, но это массив, а не диктат.Это все равно что сказать "hello"["addr"]
, что нет способа получить доступ к "addr"
: th элементу последовательности.Вы, очевидно, имеете в виду что-то вроде
ip = ni.ifaddresses("en0")[ni.AF_INET][0]['addr']
, хотя нет никакого выхода из контекста, чтобы сказать, действительно ли вам нужен только один адрес.Массив, который вы получаете, представляет собой количество привязок;возможно, вам нужны все из них?
addrs = ni.ifaddresses('en0')
ips = [x['addr'] for x in addrs[ni.AF_INET]]
Документация netifaces
на самом деле объясняет это довольно подробно.