У меня есть следующий код:

#!/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 ответ1

0

Я нашел проблему!

Кажется, что во время работы arp-scan время от времени он показывает MAC-адрес по-разному.

Например, если я сейчас сканирую сеть, мой маршрутизатор покажет так:

192.168.1.1 xx:xx:xx:xx:xx:xx (неизвестно)

После нескольких сканирований роутер будет выглядеть так:

192.168.1.1 xx:xx:xx:xX:xX:xx (неизвестно)

Некоторые буквы в верхнем регистре. Я думаю, что испортил Linux. Поэтому я нашел ответ на мою проблему. Я буду конвертировать все буквы в нижний регистр для сравнения.

Извините за беспокойство!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .