檢查網路上是否存在 mac 位址仍然不起作用(ping -b 和 arp)

檢查網路上是否存在 mac 位址仍然不起作用(ping -b 和 arp)

這是一種後續行動我的帖子。

我有我手機的 MAC 位址(三星 Galaxy S9;儘管這不重要)。我想檢查是否在網路上。它沒有靜態 IP,所以我需要使用它的 mac 位址來檢查它。

我將使用 來引用我手機的 MAC 位址[1]

  • 在我的手機上,網路的隨機 mac 位址已關閉(上一篇文章中的情況並非如此)。過去每次連接到我的網路時它都會產生一個隨機的 MAC 位址,但現在不會了。
  • 這就是我檢查 mac 位址是否在網路上的方法:
    ping -b 192.168.2.255 -c 20
    arp | grep -i "[1]"
    

這是事件的「日誌」:

#phone connected to network
ping -b 192.168.2.255 -c 20 &> /dev/null
arp | grep -i "[1]"
-> successful

#phone NOT connected to network (turned of wifi on phone)
ping -b 192.168.2.255 -c 20 &> /dev/null
arp | grep -i "[1]"
-> successful

第二次應該不會成功。手機未連接到網絡,但仍顯示在 arp 輸出中。

我的手機沒有靜態 IP 位址,但當將其連接到網路時,它幾乎總是獲得相同的 IP 位址。沒關係。輸出ping -b始終是正確的。當我的手機連接到網路時,我會看到它幾乎總是出現在(命令的)清單中的 IP 位址ping。當我的手機未連接時,我永遠不會在輸出中看到它的“標準”IP 位址。所以 ping 可以工作並且是「最新的」。

所以我假設 arp 不像 ping 那樣是「最新的」(但這只是我的原始猜測)。我認為 arp 不會更新它的表,即使 ping 已經「建立」了一個新表。但這是我根據上一篇文章的評論所想到的:“您已經在執行廣播 ping,ping -b 192.168.2.255。這應該會重新填充 IP 位址為 192.168.2 的任何線上設備的 arp 表。.*"

幫助!

答案1

如果您正在使用ARP要確定您的手機是否已連接網絡,您必須刪除手機的ARP從您的計算機輸入ARP桌子。否則,您將無法確定更改,因為先前的條目仍然保持不變。

您可以刪除特定的ARP條目arp -d <IP_ADDR>,並刪除所有帶有 的條目sudo ip neigh flush all

但是,我認為你應該使用地圖用於掃描,此外您不需要清潔ARP表不再。您可以使用這個腳本。

#!/bin/bash

mac="$1"
# Scanning network, and obtaining IP address of specfied MAC address, if exists.
PHONEIP=$(sudo  nmap -sP -n 192.168.2.0/24 | grep -B2 "$mac" | grep -Eoi "192\.168\.2\.[0-9]+")
if [[ $PHONEIP == "" ]];then
    echo "$MAC not found."
else
    echo "$MAC found at $PHONEIP"
fi

但您必須將手機的 MAC 位址作為第一個參數,或者您可以將行更改mac="$1"mac="<your-phone-mac>"

注意:您需要超級使用者權限才能使用此腳本。

相關內容