У меня есть следующий код:
#!/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
В папке known есть файл с именем 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. Так что я нашел ответ на свою проблему. Я переведу все буквы в строчные для сравнения.
Извините за беспокойство!