Прежде всего, ваш код должен выполняться с правами администратора (sudo или su в linux).Затем при запуске вашего кода возникает ошибка с этой трассировкой:
Traceback (most recent call last):
File "eth.py", line 15, in <module>
src = get_mac("enp2s0")
File "eth.py", line 12, in get_mac
info = ioctl(s.fileno(), 0x8927, struct.pack('256s', bytes(ifname[:15], "ascii")))
TypeError: str() takes at most 1 argument (2 given)
, которая обнаруживает ошибку в строке 12, точнее в bytes(ifname[:15],"ascii")
Можете ли вы предоставить вывод?