我可以从已知的 MAC 地址确定当前 IP 吗?

新手上路,请多包涵

我有一个 shell 脚本,它使用 etherwake 唤醒本地网络上的一台机器。机器唤醒后,我不确定IP地址。

在尝试回答我自己的问题时,我想出了:

 ip=$(ping -c 1 hostname | head -1 | awk '{print $3}' | sed 's/[()]//g')

这个解决方案规定我知道远程机器的主机名,这不是那么繁琐。

如果我只知道 MAC 地址,有没有办法获取 IP?

原文由 ddoxey 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 780
2 个回答

我知道是旧的,但 linux 中最简单的方法是:

 arp -a | grep "00:1E:C9:56:3C:8E"

这样做的目的是忽略是否连接在一个或另一个网络中,同时每个设备都可以看到彼此。

原文由 VicHaunter 发布,翻译遵循 CC BY-SA 4.0 许可协议

我认为没有一个命令可以做到这一点。一种技巧是在子网上进行 ping 扫描或广播 ping,然后在 arp 表中查询 MAC 地址的 IP 地址。显然不是一个理想的解决方案。例子:

 nmap -sP 192.168.1.0/24 >/dev/null && arp -an | grep <mac address here> | awk '{print $2}' | sed 's/[()]//g'

这里 nmap 将执行 ping 扫描并填充您的 arp 缓存。扫描完成后,可以使用 arp 命令打印 arp 表,然后使用 grep/awk 提取 IP 地址。您可以尝试用广播 ping 替换 nmap,但这可能不那么可靠。

原文由 Neal 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题