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

发布于 2024-10-15 17:37:09 字数 283 浏览 9 评论 0原文

您好,我正在编写一个小型 bash 脚本,该脚本将每 5 分钟扫描一次 LAN 并获取实时主机,然后获取它们的 MAC 地址。

到目前为止我有这个:

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

这给了我IP地址。现在我必须做类似的事情

arp -an | grep 'ip'

,但我是 bash 新手,我不知道该怎么做:)

Hi I'm working on a small bash script that will scan lan every 5 minutes and get live host and then get theirs MAC addresses.

So far I have this:

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

Which gives me ip addresses. Now I have to do something like

arp -an | grep 'ip'

but I'm new to bash and I don't know how :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

携余温的黄昏 2024-10-22 17:37:09

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

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

Here is a script that does exactly what you want:

#!/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
深巷少女 2024-10-22 17:37:09

尝试使用arp-scan,例如:

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

Try using arp-scan, e.g:

sudo arp-scan --interface=wlan0 192.168.1.0/24
这个俗人 2024-10-22 17:37:09

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

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

For the second part of the query You could use arping :

for host in $(nmap -sP -n -oG - 192.168.83.1-35 | grep "Up" | awk '{print $2}');
    do arping $host -c 1;
done
¢好甜 2024-10-22 17:37:09

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

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..

This one outputs all records in a greppable format:

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

It seems to work also for IP's/MAC's which are not already in the hosts ARP table. That's a good thing. On my system the script from the accepted answer only shows hosts which are listed in the ARP table...

Results in:

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..
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文