
Eu tenho o seguinte 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
Na pasta conhecida está um arquivo com o nome Router que possui o endereço MAC. As variáveis são as mesmas em um ponto, mas a instrução if aparentemente não funciona. Passei 4 horas tentando entender o que está errado, mas não consigo ver nada.
Responder1
Eu encontrei o problema!!
Parece que enquanto o arp-scan está em execução, ele mostra o endereço MAC de forma diferente de tempos em tempos.
Por exemplo, se eu verificar a rede agora, meu roteador será exibido assim:
192.168.1.1 xx:xx:xx:xx:xx:xx (Desconhecido)
Após algumas varreduras, o roteador aparecerá como:
192.168.1.1 xx:xx:xx:xX:xX:xx (Desconhecido)
Algumas letras são maiúsculas. Acho que estraguei o Linux. Então encontrei a resposta para o meu problema. Vou converter todas as letras em minúsculas para comparação.
Desculpe por incomodar!