来自 python 脚本的 ARP 填充不起作用
ARP population from python script doesn't work
我试图通过填充 ARP 缓存并从中读取来获取网络中设备的 IP(我知道 MAC):
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"])
不过这没什么区别。
问题最终与 Python 代码无关。
nmap -sP 通常向指定网络中的所有 IP 发送 ICMP-echo-requests。
尽管文档中提到了一个例外:
When a privileged user tries to scan targets on a local ethernet network, ARP requests >are used unless --send-ip was specified.
这也导致了这样一个事实,即每当命令作为 sudo 发送时(在我的情况下),除非附加 --send-ip,否则不会填充 ARP 缓存。
我试图通过填充 ARP 缓存并从中读取来获取网络中设备的 IP(我知道 MAC):
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.systemcp = sub.run(["nmap", "-sP", "192.168.1.0/24", ">/dev/null"])
不过这没什么区别。
问题最终与 Python 代码无关。
nmap -sP 通常向指定网络中的所有 IP 发送 ICMP-echo-requests。 尽管文档中提到了一个例外:
When a privileged user tries to scan targets on a local ethernet network, ARP requests >are used unless --send-ip was specified.
这也导致了这样一个事实,即每当命令作为 sudo 发送时(在我的情况下),除非附加 --send-ip,否则不会填充 ARP 缓存。