【问题标题】:Get live hosts MAC in local network在本地网络中获取实时主机 MAC
【发布时间】: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 新手,我不知道怎么做 :)

【问题讨论】:

    标签: bash ip ping arp nmap


    【解决方案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..
        

        【讨论】:

          猜你喜欢
          • 2017-02-21
          • 2011-08-22
          • 1970-01-01
          • 2023-04-05
          • 2019-02-05
          • 2015-11-18
          • 2012-09-29
          • 1970-01-01
          • 2014-09-22
          相关资源
          最近更新 更多