在本地网络中获取实时主机MAC

时间:2011-02-04 23:53:41

标签: bash ip ping arp nmap

您好我正在制作一个小型bash脚本,每5分钟扫描一次局域网并获得实时主机,然后获取其MAC地址。

到目前为止,我有这个:

nmap -sP -n -oG - 10.0.0.1-20 | grep "Up" | awk '{print $2}'

这给了我ip地址。现在我必须做类似

的事情
arp -an | grep 'ip'

但我是bash的新手,我不知道如何:)

4 个答案:

答案 0 :(得分:4)

这是一个完全符合您要求的脚本:

#!/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

答案 1 :(得分:2)

尝试使用arp-scan,例如:

sudo arp-scan --interface=wlan0 192.168.1.0/24

答案 2 :(得分:0)

对于查询的第二部分,您可以使用arping:

for host in $(nmap -sP -n -oG - 192.168.83.1-35 | grep "Up" | awk '{print $2}');
    do arping $host -c 1;
done

答案 3 :(得分:0)

这个以可格式格式输出所有记录:

nmap -n -sP 10.0.3.0/24 | awk '/Nmap scan report/{printf $5;printf " ";getline;getline;print $3;}'

它似乎也适用于尚未在主机ARP表中的IP&MAC / 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..