while true; do
if ping -c 1 $IPLNK >> /dev/null && ping -c 1 $IPSRV >> /dev/null; then
if [ "$LOCK_OK" -eq 0 ]; then
echo "Tudo OK!!!! Primeiro Aviso e Email"
LOCK_OK=1
else
echo "Aviso!! Aviso!! Aviso !!!"
fi
else
if ! ping -c 1 $IPLNK >> /dev/null; then
if [ "$LOCK_LNK" -eq 0 ]; then
echo "Link Fora!!!! Primeiro Aviso e Email"
LOCK_LNK=1
else
Spider_Trap_Lnk
fi
else
if ping -c 1 $IPLNK >> /dev/null && ! ping -c 1 $IPSRV >> /dev/null; then
if [ "$LOCK_SRV" -eq 0 ]; then
echo "Server Fora!!!! Primeiro Aviso e Email"
LOCK_SRV=1
else
Spider_Trap_Srv
fi
fi
fi
fi
done
Spider_Trap_Lnk(){
while true; do
sleep 1
CONT=`expr $CONT + 1`
if [ "$CONT" -ge 3 ]; then
echo "Link Fora!!!! Segundo Aviso e Email"
CONT=0
fi
if ping -c 1 $IPLNK >> /dev/null; then
LOCK_OK=0
LOCK_LNK=0
break;
fi
done
}
Spider_Trap_Srv(){
while true; do
sleep 1
CONT=`expr $CONT + 1`
if [ "$CONT" -ge 10 ]; then
echo "Server Fora!!!! Segundo Aviso e Email"
CONT=0
fi
if ping -c 1 $IPSRV >> /dev/null; then
LOCK_OK=0
LOCK_SRV=0
break;
fi
done
}
#FUNCTIONS
#----------------------------------------------------------
Spider_Trap_Lnk(){
while true; do
sleep 1
CONT=`expr $CONT + 1`
if [ "$CONT" -ge 3 ]; then
echo "Link Fora!!!! Segundo Aviso e Email"
CONT=0
fi
if ping -c 1 $IPLNK >> /dev/null; then
LOCK_OK=0
LOCK_LNK=0
break;
fi
done
}
Spider_Trap_Srv(){
while true; do
sleep 1
CONT=`expr $CONT + 1`
if [ "$CONT" -ge 10 ]; then
echo "Server Fora!!!! Segundo Aviso e Email"
CONT=0
fi
if ping -c 1 $IPSRV >> /dev/null; then
LOCK_OK=0
LOCK_SRV=0
break;
fi
done
}
#ROTINA PRINCIPAL
#----------------------------------------------------------
while true; do
if ping -c 1 $IPLNK >> /dev/null && ping -c 1 $IPSRV >> /dev/null; then
if [ "$LOCK_OK" -eq 0 ]; then
echo "Tudo OK!!!! Primeiro Aviso e Email"
LOCK_OK=1
else
sleep 2 #debug
echo "Aviso!! Aviso!! Aviso !!!"
fi
else
if ! ping -c 1 $IPLNK >> /dev/null; then
if [ "$LOCK_LNK" -eq 0 ]; then
echo "Link Fora!!!! Primeiro Aviso e Email"
LOCK_LNK=1
else
Spider_Trap_Lnk
fi
else
if ping -c 1 $IPLNK >> /dev/null && ! ping -c 1 $IPSRV >> /dev/null; then
if [ "$LOCK_SRV" -eq 0 ]; then
echo "Server Fora!!!! Primeiro Aviso e Email"
LOCK_SRV=1
else
Spider_Trap_Srv
fi
fi
fi
fi
done
Acho que este é um dos seus problemas ... se ainda der erro avisa.
[3] Enviado em 01/02/2012 - 18:08h Eu organizei o Codigo... ...
Spider_Crab()
{
echo "Link Fora!!!! Primeiro Aviso e Email"
while true; do
MIN=$(date +%M)
if [ "$MIN" -eq "50" ] || [ "$MIN" -eq "55" ] || [ "$MIN" -eq "00" ]; then
echo "Link Fora!!!! Segundo Aviso e Email"
fi
if ping -c 1 $IPLNK >> /dev/null; then
LOCK_OK=0
break;
fi
done
}
#ANALIZA O SERVER
Spider_Trap()
{
echo "Server Fora!!!! Primeiro Aviso e Email"
while true; do
MIN=$(date +%M)
if [ "$MIN" -eq "50" ] || [ "$MIN" -eq "55" ] || [ "$MIN" -eq "00" ]; then
echo "Link Fora!!!! Segundo Aviso e Email"
fi
if ping -c 1 $IPSRV >> /dev/null; then
LOCK_OK=0
break;
fi
if ! ping -c 1 $IPLNK >> /dev/null; then
Spider_Crab
break;
fi
done
}
Spider_Web()
{
while true; do
if ping -c 1 $IPLNK >> /dev/null && ping -c 1 $IPSRV >> /dev/null; then
if [ "$LOCK_OK" -eq 0 ]; then
echo "Tudo OK!!!! Primeiro Aviso e Email"
LOCK_OK=1
else
echo "Aviso!! Aviso!! Aviso !!!"
fi
else
if ! ping -c 1 $IPLNK >> /dev/null; then
Spider_Crab
else
if ping -c 1 $IPLNK >> /dev/null && ! ping -c 1 $IPSRV >> /dev/null; then
Spider_Trap
fi
fi
fi
done
}
Fiz umas sugestões no seu script, buscando melhorar a performance ... mas não sei se pra vc funciona, né! ... ai vc quem avalia.
A maior mudança foi na estrutura do Spider_Web
=> cada vez que o ping -c aparece no if ele é executado realmente, então na Spider_Web vc
validava "if ping -c 1 $IPLNK >> /dev/null && ping -c 1 $IPSRV >> /dev/null"
se a resposta fosse não ... ai validava "if ! ping -c 1 $IPLNK"
se a resposta fosse não ... ai validava "if ping -c 1 $IPLNK" e "if ! ping -c 1 $IPSRV"
=> mudei para: verifica se o link falhou, se não ... verifica o server ... se não ... tudo OK
Espero ter ajudado ... precisando ... tamos ai!!
#!/bin/bash
#################################################################################################################
# ESTE SCRIPT TEM POR FINALIDADE
# ANALIZAR O LINK E O SERVIDOR DE
# ESTABELECIMENTOS COMERCIAIS
# E REPLICAR E-MAILS
# NÃO ESTA TOTALMENTE PRONTO!!!!
###################################################################################################################
# VARIAVEIS
##################################################################################################################
IPLNK=199.9.3.181
IPSRV=199.9.3.1
LOCK_OK=0
TEMPO=300 #tempo entre os e-mails (segundos)
Spider_Crab()
{
echo "Link Fora!!!! Primeiro Aviso e Email"
ALERT_TIME=$(date +%S)
n_alerta=1
while ! ping -c 1 $IPLNK >> /dev/null; do
if [ "$(date +%S)" -gt "$(($ALERT_TIME + $TEMPO ))" ]; then
ALERT_TIME=$(date +%S)
n_alerta=`expr $n_alerta + 1`
echo "Link Fora!!!! Aviso numero $n_alerta e Email"
fi
done
LOCK_OK=0
}
#ANALIZA O SERVER
Spider_Trap()
{
echo "Server Fora!!!! Primeiro Aviso e Email"
ALERT_TIME=$(date +%S)
n_alerta=1
while ! ping -c 1 $IPSRV >> /dev/null; do
if [ "$(date +%S)" -gt "$(($ALERT_TIME + $TEMPO ))" ]; then
ALERT_TIME=$(date +%S)
n_alerta=`expr $n_alerta + 1`
echo "Server Fora!!!! Aviso numero $n_alerta e Email"
fi
done
LOCK_OK=0
}
###################################################################################################################
# FUNCAO MAE
##################################################################################################################
#CUIDA DA REDE
Spider_Web()
{
while true; do
if ! ping -c 1 $IPLNK >> /dev/null; then
LOCK_OK=0
Spider_Crab
elif ! ping -c 1 $IPSRV >> /dev/null; then
LOCK_OK=0
Spider_Trap
else
if [ "$LOCK_OK" -eq 0 ]; then
echo "Tudo OK!!!! Primeiro Aviso e Email"
LOCK_OK=1
else
echo "Aviso!! Aviso!! Aviso !!!"
fi
fi
done
}
#################################################################################################################
#CHAMA A FUNÇÃO PRINCIPAL
#################################################################################################################
Spider_Web
# FIM
[5] Enviado em 02/02/2012 - 22:14h Boa Modificação...
Hoje é feriado e eu não to no trabalho pra verificar o script
mas eu vi que foram meio que radicais as mudanças nele...
principalmente nas funções filhas...
aquela ideia do $ALERT_TIME foi otima...
e a Spider_Web ficou mais enxuta mesmo....
eu vou dar umas modificadas....
mas como diz Murphi... quando tu axa a solução de um problema aparecem mas 10 piquenos problemas.... lá vai...
Dada a seguinte situação...
Imagina um rede com mais de 50 filiais.. este script funciona bem para o link de 1 loja....
eu terei que criar um outro shell Maior chamando os sub shells de cada lojas e retornando 3 valores, OK, LINK OFF ou SERVER OFF...
e ainda criar um interface ou no Terminal com cores... vere amarelo e vermelho... ou uma CGI em HTML ou PHP, fora o sendmail horrivel de configurar...
[6] Enviado em 02/02/2012 - 23:48h Re: Script Para Monitorar Redes... Ajuda!! [RESOLVIDO]
ja foi de grande apio tuas ideias...
me deram uma grande clareada e eu não vou pagar 300 pila pra ninguem.... vou fazer na mão.. o software é livre a a ajuda é solidaria... porisso que a comunidade é forte!!
agora to pensando em desenvolver a front End.. mas é uma outra historia... Obrigado!
[8] Enviado em 03/02/2012 - 23:44h Re: Script Para Monitorar Redes... Ajuda!! [RESOLVIDO]