Ajuda com o "case" [RESOLVIDO]

1. Ajuda com o "case" [RESOLVIDO]

Higor Frederico
higuin

(usa Debian)

Enviado em 22/09/2012 - 18:49h

Boa noite pessoal
estou com uma dificuldade em um script para analizar meu acces.log

vai abaixo uma parte dele
esse e o original

echo verificar qual site?
read site
loc=/var/log/squid/acces.log
case $site in (cat $loc |fgrep $site |tr ' ' '|')
echo alguem acessou o $site;
esac

criei um arquivo log ficticio pra testes ficando assim

echo verificar qual site?
read site
loc=/home/secinfor/ark
##############################################
eee=$(cat $loc |fgrep $site |tr ' ' '|')
echo $eee
case $site in ($eee)
##############################################
echo alguem acessou o $site;
esac

cat /home/secinfor/ark

eu
ele testa
eles testam o script
############
quando mando pracurar "eu" vai numa boa
quando mando procurar "eles" ou "ele" nao volta nenhum resultado

alguem pode ajudar?


  


2. Re: Ajuda com o "case" [RESOLVIDO]

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 22/09/2012 - 18:54h

Desembola quem é script de quem é exemplo, coloque o script entre tags code (entre colchetes) e /code (entre colchetes), pra gente entender o que está acontecendo aí


3. Re: Ajuda com o "case" [RESOLVIDO]

Higor Frederico
higuin

(usa Debian)

Enviado em 22/09/2012 - 19:02h

higuin escreveu:

Boa noite pessoal
estou com uma dificuldade em um script para analizar meu acces.log

vai abaixo uma parte dele original

{#!bin/bash
echo quer verificar qual site?
read site
loc=/var/log/squid/acces.log
case $site in (cat $loc |fgrep $site |tr ' ' '|')
echo alguem acessou o $site;
esac}

criei um arquivo teste e um log ficticio pra testes ficando assim:

{#!/bin/bash
echo quer verificar qual site?
read site
loc=/home/secinfor/ark
eee=$(cat $loc |fgrep $site |tr ' ' '|')
echo $eee
case $site in ($eee)
echo alguem acessou o $site;
esac}

cat /home/secinfor/ark
eu
ele testa
eles testam o script


quando mando procurar "eu" vai numa boa
quando mando procurar "eles" ou "ele" nao volta nenhum resultado
alguem pode ajudar?





4. Re: Ajuda com o "case" [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 24/09/2012 - 23:42h

Você deveria estar usando uma estrutura de desvio condicional de fluxo de execução if...then...else...fi e não o case. Esta ultima é mais apropriada para variáveis multi valoradas fora de um dominio como menus de opções e este, amigo, não me pareceu ser o seu caso.

Veja!

AA=2
if [ $AA -eq 2 ]; then
echo '$AA é igual a dois'
else
echo "$AA é diferente de dois"
fi

Sugiro a você que pesquise de maneira mais apurada sobre algoritmos estruturados e principalmente sobre a sintaxe usada em shell script. Um bom começo seria usar o comando:


man bash

Boa Sorte!!!


5. Re: Ajuda com o "case" [RESOLVIDO]

Higor Frederico
higuin

(usa Debian)

Enviado em 25/09/2012 - 12:08h

./.ronin escreveu:

Você deveria estar usando uma estrutura de desvio condicional de fluxo de execução if...then...else...fi e não o case. Esta ultima é mais apropriada para variáveis multi valoradas fora de um dominio como menus de opções e este, amigo, não me pareceu ser o seu caso.

Veja!

AA=2
if [ $AA -eq 2 ]; then
echo '$AA é igual a dois'
else
echo "$AA é diferente de dois"
fi

Sugiro a você que pesquise de maneira mais apurada sobre algoritmos estruturados e principalmente sobre a sintaxe usada em shell script. Um bom começo seria usar o comando:


man bash

Boa Sorte!!!


o resultado que deveria aparecer no lugar de $eee
"case $site in ($eee)"

case $site in (eles|testam|o|script)

quando rodo o comando separado sai assim

eee=$(cat $loc |fgrep $site |tr ' ' '|')
echo $eee
eles|testam|o|script

ou seja esta sendo processado corretamente a saida, o que eu imagino que esta acontecendo e a interpretacao do comando
case $site in (cat $loc |fgrep $site |tr ' ' '|')

o que ele deve interpretar primeiro seria: (cat $loc |fgrep $site |tr ' ' '|')
depois: case $site in

mais alguem tem alguma ideia?


6. Re: Ajuda com o "case" [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 25/09/2012 - 20:47h


#!/bin/bash
_LOC='/var/log/squid/acces.log'

read -p 'Verificar qual site? ' _SITE
_SEARCHE=$(grep "^$_SITE " $_LOC | tr ' ' '|')

if [ ! -z $_SEARCHE ]
then
echo "Acessaram o site $_SITE"
fi



[/b]Muita boa sorte!!![/b]








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts