[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Como evitar um "loop"
From: |
moysespr |
Subject: |
Re: [shell-script] Como evitar um "loop" |
Date: |
Sat, 3 Jan 2004 20:19:52 -0800 (PST) |
O número de formas de fazer isso deve ser enorme. Bem aí vai apenas uma idéia
básica.
O seu arquivo lixo_crock poderia conter linhas assim:
Sex 15:11 agente21 inativo M=address@hidden 15:12 S=xyz 15:13
Sex 17:19 agente21 ativado
A primeira seria gerada pelo seu script + o emailer + SMSup
A segunda seria gerada pelo ativador de agentes.
Quando seu script deteta que o ag21 está fora ele faz:
INATIVO=`grep agente21 lixo_crock|tail -n 1|grep inativo`
[ $INATIVO ]&&{
echo $INATIVO|grep -q M=||mail -s "$INATIVO" address@hidden
echo $INATIVO|grep -q S=||SMSup xyz "$INATIVO"
}
Lembre, o mail e o sms devem apendar na linha, M=... e S=... respectivamente e,
neste siteminha simples, apenas pode ser apendado um novo inativo no arquivo
quando o último já tiver seu M= e S= lançados (linha completa).
Com isso você garante que uma informação só será passada uma única vez, através
de cada meio de comunicação.
A linha com 'ativado' seria o reset dessa memória, que tira o inativo do
agente, da última linha do grep, nesta filosofia. O ativado só precisaria ser
comunicado, se mais de 1 pessoa receber as informações de falha para, uma vez
resolvido, ninguém mais precisar agir.
Como o arquivo sofre apenas inclusões, poderá ficar guardando o histórico
indefinidamente. Acho que o tamanho seria o único limitador. Fim!
2004: long life unix-like OSs!
--- Luis Augusto Kohlbach <address@hidden> wrote:
> Bom dia ,
>
> Bem, escrevi um shell-script (bash) que monitora os agentes/programas
> desenvolvidos em COBOL e que rodam nos servidores Linux e Unix , este monitor
> serve para verificar a cada 120s (2 minutos) todos os agentes do cobol e os
> programas de comunicação desenvolvidos em C, ele fica ativo no servidor
> principal (Pentium IV Xeon com 2 processadores) e envia o estado dos
> agentes/programas para o terminal, via e-mail e SMS. O envio do status quando
> tudo esta normal, fica apenas rodando na tela do terminal e quando algum
> agente/programa fica inativo, ele envia e-mail e msg SMS.
>
> Segue abaixo o shell-script:
>
>
-------------------------------------------------------------------------------------------------------
> cat ../exec/mon_agentes.scp
> #================================================
> #Verificar agentes/programas ativos <Versao 3>
> #
> #Criado em 02/12/2003 - address@hidden
> #
> #Alterado em 17/12/2003 - address@hidden
> #
> #
> #
> #Informa via terminal, e-mail e SMS (msg p/ cel)
> #
> #quando algum agente ou xcom esta fora.
> #
> #================================================
> clear
> verifica()
> {
> qtdatv=`ps -wef |egrep "$agente" |egrep -v grep |wc -l`
> if [ "$qtdatv" -lt "$qtd" ]
> then
> echo "-------------------------------------" >lixo_crock
> date >>lixo_crock
> echo -e "Atencao! Agente "$agente" inativo!" >>lixo_crock
> echo -e "Atencao! Agente "$agente" inativo!" | mail address@hidden
> $exdir/SMSup SPC/SC "$agente" 04896085759
> ps -wef |grep "$agente" |grep -v grep >>lixo_crock >/dev/null
> cat lixo_crock
> else
> echo -e Todos os $agente Estao Ativos - Total: "$qtdatv"
> fi
> }
> echo -e Iniciando em `date`
> for i in `cat "$exdir"/mon_agentes.cfg |awk '{print $1}'`
> do
> agente=`echo $i|cut -d: -f1-1`
> qtd=`echo $i|cut -d: -f2-2`
> verifica
> done
>
-------------------------------------------------------------------------------------------------------
>
> Porém estou com uma questão que ainda não consegui resolver, se reparar na
> linha que envia mensagem $exdir/SMSup SPC/SC "$agente" 04896085759, vai notar
> que ela funciona da mesma forma que o envio de e-mail, porém a minha
> preocupação eh que este shell-script entre em loop e comece a enviar e-mail's
> e mensagens SMS sem parar, tomando conta da máquina e gerando um custo alto,
> caso o problema não seja detectado cedo e resolvido.
>
> Eis a questão , como posso "limitar" o envio de msg e mail's ? , e como
> poderia montar um relatório para ter uma estatística semanal/mensal das
> paradas dos agentes/programas ?
>
> Agradeço desde já !
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
__________________________________
Do you Yahoo!?
Find out what made the Top Yahoo! Searches of 2003
http://search.yahoo.com/top2003
- Re: [shell-script] Como evitar um "loop",
moysespr <=