
Tengo el siguiente código:
#!/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
En la carpeta conocida hay un nombre de archivo Router que tiene la dirección MAC. Las variables son las mismas en un momento, pero la declaración if aparentemente no funciona. Pasé 4 horas tratando de entender qué está mal pero no puedo ver nada.
Respuesta1
¡¡Encontré el problema!!
Parece que mientras se ejecuta arp-scan, muestra la dirección MAC de forma diferente de vez en cuando.
Por ejemplo, si escaneo la red ahora, mi enrutador se mostrará así:
192.168.1.1 xx:xx:xx:xx:xx:xx (Desconocido)
Después de algunos escaneos, el enrutador aparecerá como:
192.168.1.1 xx:xx:xx:xX:xX:xx (Desconocido)
Algunas letras están en mayúsculas. Creo que arruiné Linux. Entonces encontré la respuesta a mi problema. Convertiré todas las letras a minúsculas para comparar.
¡Perdón por molestar!