shell-script-pt
[Top][All Lists]
Advanced

[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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]