通过mac地址找设备的IP地址

通过mac地址找设备的IP地址

linux系统中工作,经常需要远程登陆到远端设备进行一些配置等操作。在局域网中,如果连接着多个设备,通常情况下这些设备都是使用DHCP获得IP地址实现联网的。如果要远程登陆这些设备需要先知道他们的IP地址。如何在不接触这些设备的情况下,找到他们的IP地址呢?

今天学到一种使用arp,通过MAC地址找这些设备的方法。任何一个网络设备,它的IP不是固定的,但是它的MAC地址一定时永远不变的(不考虑MAC欺骗的情况)。在局域网中,如果两个网络设备相互通信成功过一次,就会在各自的arp表中记录到对方的IP地址和mac地址。这样,我们只要先和局域网内所有网络设备通信一次,再查询本机的arp表即可得到局域网内所有设备的IP和MAC信息。如果我们事先知道要找的设备的MAC地址,我们就能对应得到其IP。即便不知道MAC地址也没关系,小的局域网一般只有几个到几十个设备,这种方法也可以让搜索空间从256降到几十,然后再一个一个试也能提高不少效率。

如果网络中设备超过10个,手动不现实,自然想到用脚本自动处理。
代码如下:
IPsearch.sh

#!/bin/bash
IPdomain=${1%.*}
searchstart=${1##*.}
searchend=$2

for addr in $(seq $searchstart $searchend)
do
	ping -c 1 -i 0.2 -W3 $IPdomain.$addr
done
arp -n |grep -v 'incomplete'

打开命令终端:
输入

source IPsearch.sh 192.168.1.100 150

意思是从192.168.1.100开始到192.168.1.150,逐个IP去ping一下,ping通了,就完成了一次通信,arp表就会刷新. 最后通过arp -n命令获取本地arp表,通过grep筛选一下,把无效的行去掉,只留下有IP和MAC地址的行,打印在屏幕上。

Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.31.1             ether   00:50:56:c0:00:08   C                     ens33
192.168.31.254           ether   00:50:56:e6:e7:69   C                     ens33
192.168.31.2             ether   00:50:56:e9:bf:f5   C                     ens33

使用arp -a 或者arp -n之前先ping一下,这样保证ARP表得到更新,不然得到的ARP表是自然生成的,可能不全,也可能不是最新的。

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值