[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]
- Re: [shell-script] Monitorar logs,
microbiu <=