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: microbiu
Subject: Re: [shell-script] Monitorar logs
Date: Sat, 4 Jul 2009 07:42:41 +0000

 Bom dia.
 Você sabe o que quer dizer "tail -n 0"?
 sds
 Eric
 On Sex  3/07/09 16:59 , Daniel Fernando Coimbra address@hidden
sent:
        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 ----
                                  


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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