
次のコードがあります:
#!/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
既知のフォルダには、MAC アドレスを持つ Router というファイル名があります。変数はある時点では同じですが、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 を台無しにしたようです。そこで、問題の解決策を見つけました。比較のために、すべての文字を小文字に変換します。
迷惑をかけてごめんなさい!