Я пытаюсь получить IP-адрес устройства в моей сети (из которых я знаю MAC), заполнив кэш ARP и прочитав из него:
def getIP(mac):
os.system("nmap -sP 192.168.1.0/24 >/dev/null")
ip_line = sub.getoutput("ip n | grep "+ mac)
if ip_line == '':
return ''
else:
return ip_line.split()[0]
Команда, которая вызывает nmap, похоже, не заполняет кэш arp, поскольку она остается пустой. Когда я выполняю команду nmap вручную, она работает.
Я уже пытался заменить os.system на
cp = sub.run(["nmap", "-sP", "192.168.1.0/24", ">/dev/null"])
Хотя это не имеет значения.