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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Res: [shell-script] Re: While e as condições


From: pablo oliveira
Subject: Res: [shell-script] Re: While e as condições
Date: Thu, 18 Oct 2007 04:57:27 -0700 (PDT)

Bom galera 
o script ficou assim com as sugestões, mas ainda não funciona como quero

####################começa aqui#############################

#!/bin/bash
LISTHOSTS=/etc/init.d/servicos/ipdog
ENDHOSTS=/etc/init.d/servicos/ipdog-end
COUNT=4
echo "script de watchdog executado em `date +%d-%m-%y-%H:%M`" >> /var/log/ipdog
for i in `cat $LISTHOSTS`; do
HOSTS=`echo $i | cut -d ';' -f 1`
NOME=`echo $i | cut -d ';' -f 2`

for myHost in $HOSTS;
do
  count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }' | 
awk '{ print $1 }')

  if [ $count -eq 0 ]; then
        for i in `cat $ENDHOSTS`; do
        END=`echo $i | cut -d ';' -f 1`
        ENOME=`echo $i | cut -d ';' -f 2`
         Xx=1
# Rotina do mail
                echo "script de watchdog tentativa 1 do $HOSTS em `date 
+%d-%m-%y-%H:%M`" >> /var/log/ipdog
                SCfrom="address@hidden"
                SCto="$address@hidden"
                SCsubject="Host parado $HOSTS - `date +%d-%m-%y-%H:%M`"
                SCserver="200.xxx.xxx.xxx"
                SCbody=" Caro Administrador, o Host $HOSTS em $NOME esta sem 
comunicacao, favor revisar!"
                echo -e "From: $SCfrom \nSubject: $SCsubject  \nTo: $SCto 
\n\n$SCbody\n\n" | msmtp --host=$SCserver -f $SCfrom  -- $SCto
                Yy=$?
                     if [ "$Yy" -ne 0 ];
                      then
                            while test "$Yy" -ne 0 -o "$Xx" -le 3;
                            #while [ "$Yy" -ne 0 ] -o [ "$Xx" -le 3 ];
                                do
                                    # Rotina do mail
                                    Xx=$((Xx+1));
                                    for i in `cat $ENDHOSTS`; do
                                    END=`echo $i | cut -d ';' -f 1`
                                    ENOME=`echo $i | cut -d ';' -f 2`
                                    sleep 10
                                    echo "script de watchdog, envio de e-mail 
tentativa $Xx do $HOSTS em `date +%d-%m-%y-%H:%M`" >> /var/log/ipdog
                                    SCfrom="address@hidden"
                                    SCto="$address@hidden"
                                    SCsubject="Host parado $HOSTS - `date 
+%d-%m-%y-%H:%M`"
                                    SCserver="200.xxx.xxx.xxx"
                                    SCbody=" Caro Administrador, o Host $HOSTS 
em $NOME esta sem comunicacao, favor revisar!"
                                    echo -e "From: $SCfrom \nSubject: 
$SCsubject  \nTo: $SCto \n\n$SCbody\n\n" | msmtp --host=$SCserver -f $SCfrom -- 
$SCto
                                    Yy=$?
                                    done;
                                 done;
                     fi;
                 done;
 fi;
done;
done;
################################### termina 
aqui##################################################### 

Importante pra mim:

while test "$Yy" -ne 0 -o "$Xx" -le 3;
while [ "$Yy" -ne 0 ] -o [ "$Xx" -le 3 ];

Quero que o While pare quando $Yy seja igual a zero OU quando $Xx seja maior 
que 3.

Pablo Oliveira de Oliveira

----- Mensagem original ----
De: mop <address@hidden>
Para: address@hidden
Enviadas: Quinta-feira, 18 de Outubro de 2007 0:07:58
Assunto: [shell-script] Re: While e as condições

Realmente desaconselho o uso do $?, a menos que você saiba muito bem
o que está fazendo, pois ele muda a toda hora. Basta executar echo e
 pronto,
ele já mudou, embora o valor possa ser igual ao anterior, lógico.
Até por manutenção futura isso deve ser evitado nesse ponto onde foi
 colocado.
Pegue o valor do status exatamente no ponto que deseja e armazene, por
 exemplo,
Y=$?

Experimente, para não perder tempo, um loop test simples na linha de
 comando:
Y=0;Xx=2; while [ $Y$Xx -lt 3 ];do read -p _$Y$Xx -t 1;done

Teste seu universo, quando ok, é só passar para o script.



---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de
 programação, como perl, C etc. Quem insistir em não seguir esta regra será
 moderado sem prévio aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em
 http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil

 
Links do Yahoo! Grupos

 





      Abra sua conta no Yahoo! Mail, o único sem limite de espaço para 
armazenamento!
http://br.mail.yahoo.com/

[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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