我有一个混合 Linux 发行版(一些 Solaris、一些 RedHat、一些 Ubuntu)的主机名列表,我需要获取每个发行版上任何以太网设备的 IP 和 MAC。
我没有任何这些服务器的 root 访问权限,因此我在一台服务器上编写了一个 bash 脚本,该脚本在其他服务器上远程运行,并返回从 ifconfig 的输出解析的 IP 和 MAC。因为这个脚本使用了expect文件来传入我的密码,所以执行时间比较长,而且不太优雅。
必须有更好的方法来做到这一点。我知道一些工具可以为我做到这一点,但不幸的是我无法安装任何其他软件包,因为我没有这样做的权限。
arp -a 的输出正是我想要的,但问题是其中一些条目似乎有多个 IP 和主机名绑定(bind)到同一 MAC 地址。所以我得到如下条目: HOSTNAME-1 (IP-1) 位于 eth0 上的 SAME_MAC_ADDR [ether] HOSTNAME-2 (IP-2) 位于 eth0 上的 SAME_MAC_ADDR [ether] ? (IP-2) 位于 eth0 上的 SAME_MAC_ADDR [ether]
有没有办法首先从我拥有的主机名列表中获取所有 IP 和 MAC 地址?我猜 arp 是我需要的?
其次,如果有重复,是否有办法获取与每个 MAC 地址关联的所有其他主机名或 IP?
最佳答案
arp 命令将显示您所连接的主机已知的 MAC 地址和关联的 IP 地址列表。
ifconfig 是正确的工具(或某些发行版中的“ip a”)。为什么不尝试在每台计算机中放置一个 cron 作业,将“ip a”或“ifconfig”的结果存储到临时文件中,或者在每个远程主机中执行该命令,只需下载该文件并在本地服务器中进行解析?
如果没有,他们在 *IX 框中获取网络适配器准确信息的唯一方法是进入主机并询问此信息。
关于linux - 从已知主机名列表中获取 IP 和 MAC 信息的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38335711/