Wie überprüft man Variablen in Bash richtig?

Wie überprüft man Variablen in Bash richtig?

Ich habe folgenden Code:

#!/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

Im bekannten Ordner befindet sich eine Datei mit dem Namen Router, die die MAC-Adresse enthält. Die Variablen sind an einer Stelle gleich, aber die if-Anweisung funktioniert anscheinend nicht. Ich habe 4 Stunden damit verbracht, herauszufinden, was falsch ist, aber ich kann nichts sehen.

Antwort1

Ich habe das Problem gefunden!!

Während des Arp-Scans wird die MAC-Adresse anscheinend von Zeit zu Zeit anders angezeigt.

Wenn ich jetzt beispielsweise das Netzwerk scanne, wird mein Router folgendermaßen angezeigt:

192.168.1.1 xx:xx:xx:xx:xx:xx (Unbekannt)

Nach einigen Scans wird der Router wie folgt angezeigt:

192.168.1.1 xx:xx:xx:xX:xX:xx (Unbekannt)

Einige Buchstaben sind groß geschrieben. Ich glaube, ich habe Linux vermasselt. So, jetzt habe ich die Antwort auf mein Problem gefunden. Ich werde alle Buchstaben für den Vergleich in Kleinbuchstaben umwandeln.

Entschuldigen Sie die Störung!

verwandte Informationen