11 de set. de 2012

Shell Scipt Consulta Linha a Linha Arquivo Texto

Ola Pessoal, apos muita dedicação e sofrimento estarei hoje postando um script em linux que me auxiliou muito na extração de informações em tempo real. Vamos ao código.


Cenário Atual

Servidor de FTP (transferencia de arquivos) rodando o VSFTP sobre o SuSE Linux 11 SP2. O vsftpd gera arquivo de log's dos arquivos (upload e download) mas não gera arquivo preciso como tentativa de Login, se o Login foi correto bem como a taxa de transferencia dos arquivos etc. Todas essas informações ficam armazenadas no /var/log/messages do SuSE.

Cenário Desejado

Ler o arquivo /var/log/messages do SuSE e coletar essas informações sem repeti-las de maneira que todas as informações sejam atualizadas uma porque o messages não pode ser alterado, pois o syslog fica com o arquivo aberto diretamente.

Considerações do Job

- Devera existir o caminho /root/scripts/logs
- Devera ser criado o arquivo loglinhaum.log e atribuir o numero 1 a ele (comando touch /root/scripts/logs/loglinhaum.log e apos o comando echo "1" > /root/scripts/logs/loglinhaum.log) Sinta-se a vontade para automatizar esta etapa...

=============================================================
DIRMSG='/root/scripts/logs/monitormessagesbalancas.log'
CONTADOR="/root/scripts/logs/cont.log"
MESSAGES='/var/log/messages'
LOGLINHAUM="/root/scripts/logs/loglinhaum.log"
a=`cat $LOGLINHAUM`
b=`cat -b $MESSAGES |tail -1 |awk '{print $1}'`
if [ "$a" -gt "$b" ]; then
        echo "1" > $LOGLINHAUM
        a=`cat $LOGLINHAUM`
fi
rm $DIRMSG
cat -b $MESSAGES | while read line
do
echo $line |awk '{print $1}' > $CONTADOR
cont=`cat $CONTADOR`
    if [ "$a" -ge "$cont" ]; then
        echo "nao faz nada"
    else
        if [ "$b" -eq "$cont" ]; then
                echo $line >> $DIRMSG
                echo "$b" > $LOGLINHAUM
                sleep 10
                exit
        else
                echo $line >> $DIRMSG
        fi
     fi
done
=============================================================

Nenhum comentário:

Postar um comentário