
我有以下程式碼:
#!/bin/bash
FILES=known/*
arp-scan -l > temp_scan.log
cat temp_scan.log | while read line
do
for f in $FILES
do
echo "--------------------------------"
ADDR=$(cat $FILES)
MAC=$(echo $line | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}')
sleep 0.1
#echo "$ADDR"
echo "$MAC"
if [[ "$ADDR" == "$MAC" ]]
then
echo "found"
else
echo "not fount"
fi
done
done
在已知資料夾中有一個名為 Router 的文件,其中包含 MAC 位址。變數在某一點上是相同的,但 if 語句顯然不起作用。我花了 4 個小時試圖了解出了什麼問題,但我看不到任何東西。
答案1
我發現問題了!
看來,當 arp-scan 運行時,它顯示的 MAC 位址有時會有所不同。
例如,如果我現在掃描網絡,它將顯示我的路由器,如下所示:
192.168.1.1 xx:xx:xx:xx:xx:xx(未知)
幾次掃描後,路由器將顯示為:
192.168.1.1 xx:xx:xx:xX:xX:xx(未知)
有些字母是大寫的。我想我搞砸了linux。所以我找到了我的問題的答案。我會將所有字母轉換為小寫以進行比較。
對不起打擾!