shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Monitorar logs


From: Daniel Fernando Coimbra
Subject: Re: [shell-script] Monitorar logs
Date: Mon, 06 Jul 2009 20:39:57 -0300
User-agent: Thunderbird 2.0.0.18 (X11/20081105)

Fabiano, muito obrigado, desconhecia completamente essa opção do grep.
Vou aproveitar a oportunidade para estudar melhor o mesmo.

Fabiano Caixeta Duarte wrote:
> 2009/7/3 Daniel Fernando Coimbra <address@hidden>:
>> Olá pessoal, estou fazendo um pequeno script para monitorar as entradas
>> de log feitas pelo iptables. Quando executo o script para testar nos
>> logs já existentes (removendo o "tail" e complementando o "grep" com o
>> caminho do arquivo) a execução é perfeita e me dá as informações como
>> esperado. No entanto, ao executá-lo como segue abaixo, para que a
>> monitoração seja em "tempo real" não há qualquer saída, embora os logs
>> estejam sendo modificados.
>>
>> Não há qualquer aviso de erros na execução e não faço idéia do que pode
>> estar errado! Os logs estão sendo gerados e contém as strings "Firewall
>> - ${INFO}:", suspeito que o meu uso do "tail -f" esteja errado mas não
>> consegui descobrir qual seria a correção...
>>
>> Agradeço muito se puderem me auxiliar.
>>
>>
>> (o arquivo color-definitions.sh contém apenas definição de variáveis com
>> strings de cores e por isso não o inclui)
>>
>> ---- monitor.sh ----
>>
>> source color-definitions.sh
>> U='\e[4m'
>>
>> sudo echo "Iniciando Monitor... `date`" || exit 1
>>
>> sudo tail -n 0 --follow=name /var/log/syslog | grep Firewall | while
>> read Mon Day Time Host lixo lixo lixo LOGNAME DEV_IN DEV_OUT MAC SRC DST
>> LEN TOS PREC TTL ID LINELOG
>> do
>>    TIMELINE=" @$Time-$Day/$Mon"
>>    PROTO=`echo $LINELOG | cut -d= -f2 | cut -d' ' -f1`
>>    S=`echo $SRC | cut -d= -f2`
>>    SP=`echo $LINELOG | cut -d= -f3 | cut -d' ' -f1`
>>    D=`echo $DST | cut -d= -f2 | cut -d' ' -f1`
>>    DP=`echo $LINELOG | cut -d= -f4 | cut -d' ' -f1`
>>    LINE=$(echo $LINELOG | cut -d= -f6- | cut -d' ' -f2 | tr -d ' ')
>>    case $LOGNAME in
>>        'PING:')
>>            if [ "$S" == "192.168.0.1" ]
>>            then
>>                C=$LGREEN
>>            else
>>                C=$YELLOW
>>            fi
>>            echo -e "${RED}PING${NORM} from ${C}${S}${NORM}$TIMELINE"
>>            ;;
>>        'SPOOFING:')
>>            echo -e "${YELLOW}${U}SPOOFING${NORM} $S:$SP:$DP:D 
>> ${LINE}$TIMELINE"
>>            ;;
>>        'INPUT:')
>>            if [ "`echo $D | cut -d. -f4`" == "255" ]
>>            then
>>                if [ "$S" == "0.0.0.0" ]
>>                then
>>                    S=`echo $MAC | cut -d: -f7-`
>>                fi
>>                MSG="${BROWN}BROADCAST${NORM} from ${U}${S}"
>>            else
>>                MSG="${BLUE}INPUT${NORM} from ${U}${S}"
>>            fi
>>            echo -e "${MSG}${NORM} ${PROTO}
>> ${YELLOW}${SP}${NORM}:${YELLOW}${DP}${NORM} ${LINE}$TIMELINE"
>>            ;;
>>        *)
>>        echo INVALID ENTRY $LINE $TIMELINE
>>    esac
>> done &
>>
>> sudo tail -n 0 --follow=name /var/log/messages | grep Firewall | grep -v
>> sudo | while read Mon Day Time Host lixo lixo lixo LOGNAME DEV_IN
>> DEV_OUT MAC SRC DST LEN TOS PREC TTL ID LINELOG
>> do
>>    PROTO=`echo $LINELOG | cut -d= -f2 | cut -d' ' -f1`
>>    S=`echo $SRC | cut -d= -f2`
>>    SP=`echo $LINELOG | cut -d= -f3 | cut -d' ' -f1`
>>    D=`echo $DST | cut -d= -f2`
>>    DP=`echo $LINELOG | cut -d= -f4 | cut -d' ' -f1`
>>    TIMELINE=" @$Time-$Day/$Mon"
>>    LINE=$(echo $LINELOG | cut -d= -f6- | cut -d' ' -f2 | tr -d ' ')
>>
>>    if [ "`echo $D | cut -d. -f4`" == "255" ]
>>    then
>>        MSG="${BROWN}BROADCAST${NORM}"
>>        if [ "$S" == "0.0.0.0" ]
>>        then
>>            S=`echo $MAC | cut -d: -f7-`
>>        fi
>>        MSG="${MSG} from ${U}${S}"
>>    else
>>        case $LOGNAME in
>>            'LOCALINPUT:')
>>                MSG="LOCAL from ${U}${S}"
>>                ;;
>>            'SERVICES:')
>>                MSG="${LGREEN}SERVICES${NORM} from ${U}${S}"
>>                ;;
>>            *)
>>        esac
>>    fi
>>
>>    echo -e "${MSG}${NORM} ${PROTO}
>> ${YELLOW}${SP}${NORM}:${YELLOW}${DP}${NORM} ${LINE}$TIMELINE"
>> done &
>>
>> while :
>> do
>>    sleep 6h
>>    echo ---- `date` ----
>> done
>>
>> ---- monitor.sh ----
>>
> 
> 
> http://br.groups.yahoo.com/group/shell-script/message/15208
> 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]