Como verificar variáveis corretamente no Bash?

0

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 há um nome de arquivo que contém 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 vejo nada ..

    
por ZaBiC 12.08.2014 / 22:15

1 resposta

0

Eu encontrei o problema !!

Parece que, enquanto o arp-scan está sendo executado, ele mostra o endereço MAC de maneira diferente de tempos em tempos.

Por exemplo, se eu analisar a rede agora, ela mostrará meu roteador assim:

192.168.1.1 xx: xx: xx: xx: xx: xx (desconhecido)

Após algumas digitalizações, o roteador aparecerá como:

192.168.1.1 xx: xx: xx: xX: xX: xx (desconhecido)

Algumas letras são maiúsculas. Eu acho que estraguei o Linux. Então eu encontrei a resposta para o meu problema. Eu vou converter todas as letras para minúsculas para a comparação.

Desculpe por incomodar!

    
por 12.08.2014 / 22:44

Tags