#!/bin/bash
# Data: 27/03/2007
# Version 1.0
#
# O programa foi feito para pegar uma lista de equipamentos "ARQ_TERMINAL" e
# testa-lo seguidamente, este programa é executado no cron de 15 em 15 minutos
# e pode acontecer de travar em algum teste, como ele roda de tempos em tempos
# foi criado uma rotina que verifica se ele já esta funcionando e toma a decisão
# ou não de matar o anterior e reiniciar o processo do ponto onde parou, também
# tem a capacidade de verificar se ele morreu e reiniciar do ponto onde parou
# Uma outra carcteristica é que ele altera um arquivo de configuração de um
# outro script p/ que le faça o teste do equipamento coreto
PID=$$
DIR_HOME="/home/programa"
DIR_CONF="${DIR_HOME}/programa/conf"
DIR_TMP="${DIR_HOME}/tmp"
ARQ_TERMINAL="${DIR_CONF}/terminal.txt"
NULL="/dev/null"
# Verifica se script esta rodando
if [ -f ${DIR_TMP}/.programa_terminais.pid ]; then
PID=`head -n 1 ${DIR_TMP}/.programa_terminais.pid`
TERMINAL_ATUAL=`head -n 1 ${DIR_TMP}/.programa_terminais.state`
# Verifica se script esta na memoria
ps -ax | grep ${PID} 2>&1 > ${NULL}
if [ $? -eq 0 ]; then
# Verifica se ja foi testado a existencia deste script em memoria
if [ `tail -n 1 ${DIR_TMP}/.programa_terminais.pid` -eq 1 ]; then
# Marca que foi executado o teste
echo -e "${PID}\n2" > ${DIR_TMP}/.programa_terminais.pid
exit 1
else
# Script ja foi testado anteriormente, possivelmente travou, retira da memoria
kill -9 ${PID} 2>&1> ${NULL}
fi
fi
fi
# Cria arquivo com o PID de execucao
echo -e "${PID}\n1" > ${DIR_TMP}/.programa_terminais.pid
# Inicia coleta de "terminais"
for TERMINAL in `cat ${ARQ_TERMINAL}`; do
# Verifica se e inicio de coleta
if [ "${TERMINAL_ATUAL}" = "" ]; then
# Altera arquivo de configuracao p/ e executa
sed "s/#MARK#/${TERMINAL}/" ${DIR_CONF}/Teste.template > ${DIR_CONF}/Teste.conf
${DIR_HOME}/programa.sh -n -t ${DIR_CONF}/Teste.conf
# Grava o terminal ja testado
echo -e "${TERMINAL}" > ${DIR_TMP}/.programa_terminais.state
else
# Teste p/ procura de terminal ainda nao testado
if [ "${TERMINAL_ATUAL}" = "${TERMINAL}" ]; then
unset TERMINAL_ATUAL
fi
fi
done
rm -f ${DIR_TMP}/.programa_terminais.pid
rm -f ${DIR_TMP}/.programa_terminais.state
terça-feira, 27 de março de 2007
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário