Эта часть здесь:
def GetMacByIP():
z = subprocess.check_output('arp -a ', shell=True, stderr=subprocess.DEVNULL, stdin=subprocess.DEVNULL)
a = z.decode(encoding="cp866")
f = a.find("Physical Address")
o = a[f:].split(' ')
for a in o:
#print(a)
#print(macRegex.match(a))
if macRegex.match(a): # It's possible that this if statement never meets
return a.replace('-', ':')
У вас есть инструкция if
. Когда условие никогда не соответствует заявлению, вы не сказали python, что возвращать, и поэтому он возвращает None
.