[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]
- Res: [shell-script] Re: While e as condições,
pablo oliveira <=