removido
(usa Nenhuma)
Enviado em 25/04/2012 - 15:36h
Prezados, boa tarde! Estou iniciando em Shell Script e estou quebrando a cabeça para calcular a diferença de tempo entre duas datas. Consultei diversos fóruns e não encontro onde estou errando.
Vamos lá...
Eu extraio uma string de data de um arquivo de log, este comando está dentro de um while:
horaerro="$(echo $LINHA | cut -c1-17)"
resultado: horaerro=19/03/12 08:32:45
__________________
Tenho uma variável $data que traz o momento atual:
data=`date +"%d/%m/%y %H:%M:%S"`
__________________
Tentei primeiro da maneira mais óbvia, subtraindo as duas datas, mas sem sucesso.
Tentei transformar minha váriavel $horaerro em segundos, através do comando %s, mas acredito que não aceite outra data que não seja do date, enfim, criei o seguinte:
convherro=`date +%s --date="$horaerro"`
Resultado:
date: 0551-402 Invalid character in date/time specification.
Usage: date [-u] [+"Field Descriptors"]
convherro=
_________________
Gostaria de uma orientação ou um caminho para que eu consiga avançar no meu script, que aliás, é bem simples, mas estou quebrando a cabeça... Segue abaixo meu código para quem interessar, desde já agradeço.
set -x
#formatação de data para nome do log
ano=`date +%Y`
mes=`date +%m`
dia=`date +%d`
#nome do aruivo
arquivo="kernel"$ano$mes$dia"*.log"
#caminho dos arquivos
strorig="/home/txxxxx/eu/"$arquivo;
strdest="/home/txxxxx/eu/XXXX.log";
tempfile="/home/txxxxx/eu/tempfile.txt";
#formatação de data
data=`date +"%d/%m/%y %H:%M:%S"`
horaerro=0
#verifica se o log existe
if [ -e $strorig ]
then
grep "Erro .Erro writeDB .ORA-" "$arquivo" >> $tempfile
grep "Erro .Erro writeDB .ORA-" "$arquivo" > /dev/null 2>&1
if [ $? <> 0 ]
then
while read LINHA
do
horaerro="$(echo $LINHA | cut -c1-17)"
convherro=`date +%s --date="$horaerro"`
data=$($data +%s)
#dialog="$(echo $horaerro | cut -c1-2)"
#meslog="$(echo $horaerro | cut -c4-5)"
#anolog="$(echo $horaerro | cut -c6-9)"
#diftempo=$data-$horaerro
if [ $diftempo -lt 900 ]
then
echo $data "E XXXX Mensagem de erro existente na log" $arquivo
fi
done < $tempfile
fi
else
#grava a informação no tivoli.log caso o arquivo não exista.
echo $data "W XXXX Arquivo de log não encontrado na data de hoje" "$data"
fi
#HeartBeat
echo $data "I XXXX Heart Beat - Check de execução ok."