在本地网络中获取实时主机 MAC
Posted
技术标签:
【中文标题】在本地网络中获取实时主机 MAC【英文标题】:Get live hosts MAC in local network 【发布时间】:2011-06-21 16:52:30 【问题描述】:您好,我正在编写一个小型 bash 脚本,该脚本将每 5 分钟扫描一次局域网并获取实时主机,然后获取他们的 MAC 地址。
到目前为止,我有这个:
nmap -sP -n -oG - 10.0.0.1-20 | grep "Up" | awk 'print $2'
这给了我 IP 地址。现在我必须做类似的事情
arp -an | grep 'ip'
但我是 bash 新手,我不知道怎么做 :)
【问题讨论】:
【参考方案1】:这是一个完全符合您要求的脚本:
#!/bin/bash
HOSTS=$(nmap -sP -n -oG - 192.168.1.1-10 | grep "Up" | awk 'print $2')
for host in $HOSTS; do
arp -an | grep $host | awk 'print $2 $4'
done
【讨论】:
太棒了!现在的问题是我收到类似 - (10.0.0.10)(incomplete) 的错误。【参考方案2】:尝试使用arp-scan
,例如:
sudo arp-scan --interface=wlan0 192.168.1.0/24
【讨论】:
【参考方案3】:对于查询的第二部分,您可以使用 arping :
for host in $(nmap -sP -n -oG - 192.168.83.1-35 | grep "Up" | awk 'print $2');
do arping $host -c 1;
done
【讨论】:
【参考方案4】:这一个以可greppable格式输出所有记录:
nmap -n -sP 10.0.3.0/24 | awk '/Nmap scan report/printf $5;printf " ";getline;getline;print $3;'
它似乎也适用于尚未在主机 ARP 表中的 IP/MAC。这是好事。在我的系统上,接受答案中的脚本仅显示 ARP 表中列出的主机...
结果:
10.0.3.100 B8:27:EB:8E:C5:51
10.0.3.101 00:26:B6:E1:4B:EB
10.0.3.112 00:01:29:02:55:25
etc..
【讨论】:
以上是关于在本地网络中获取实时主机 MAC的主要内容,如果未能解决你的问题,请参考以下文章