這是一種後續行動這我的帖子。
我有我手機的 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>"
。
注意:您需要超級使用者權限才能使用此腳本。