3
respostas

Meu scripts não cai no "echo 'Formato não e valido '"

Aqui no meu scripts:

cd ~/apache-log

regax="\b([0-9]{1,3}\.){3}[0-9]{1,3}\b"

if [[ $1 =~ $regex ]]
then
    cat apache.log | grep $1

        if [ $? -ne 0 ]
        then
            echo "O endereço IP procurado não esta presente no arquivo --> apache.log"
        fi

else
    echo "Formato não e valido"
fi

Eu digito no terminal do linux:

bash filtrando-resultado-apache.sh 47.86.228.66:

47.86.228.66 - - [18/Jul/2017:14:45:43 -0300] "GET /apps/cart.jsp?appID=7706 HTTP/1.0" 200 4939 "http://www.kim-acevedo.com/explore/author/" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_9) AppleWebKit/5351 (KHTML, like Gecko) Chrome/15.0.805.0 Safari/5351"

É bash filtrando-resultado-apache.sh 47.86.2a8.66

O endereço IP procurado não esta presente no arquivo --> apache.log

O scripts cai no: echo "O endereço IP procurado não esta presente no arquivo --> apache.log" e não caiu no echo "Formato não e valido"

Alguém sabe porque o scripts não esta chega no "echo 'Formato não é valido'"?

3 respostas

Olá Guilherme, tudo bem?

Estava revendo o código, acredito que o problema foi na declaração da variável regex, no código temos:

regax="\b([0-9]{1,3}\.){3}[0-9]{1,3}\b"

Mas no if estaríamos passando o conteúdo de uma variável regEx.

Abs

Cara eu copiei codigo do regax e ele não cai no echo "Formato não e valido"

Acredito que o problema esteja nesse trecho:

regax="\b([0-9]{1,3}\.){3}[0-9]{1,3}\b"

if [[ $1 =~ $regex ]]

Perceba que a declaração da variável está regAx, mas no if, a comparação do parâmetro passado está sendo feita com regEx