Script Para Monitorar Redes... Ajuda!! [RESOLVIDO]

1. Script Para Monitorar Redes... Ajuda!! [RESOLVIDO]

Cristiano dos Santos da Silva
maozinha_tribal

(usa Ubuntu)

Enviado em 31/01/2012 - 18:55h

Preciso de sjuda neste script;
de monitoramento de redes
ele ainda esta sendo criado

estou testando a saida dele com o comando echo...

mas ele não sai o echo da função... oque ha de errado??

###########################################################################

#!/bin/bash

IPLNK=199.9.3.1
IPSRV=199.9.3.5
LOCK_OK=0
LOCK_LNK=0
LOCK_SRV=0

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
}

#############################################################################


  


2. Re: Script Para Monitorar Redes... Ajuda!! [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 01/02/2012 - 17:03h

A primeira coisa é que a function deve estar num lugar antes da chamada dela no seu script ... tipo assim:

#!/bin/bash

#PARAMETROS
#----------------------------------------------------------
IPLNK=$1
IPSRV=$2
LOCK_OK=0
LOCK_LNK=0
LOCK_SRV=0


#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. Eu organizei o Codigo... ...

Cristiano dos Santos da Silva
maozinha_tribal

(usa Ubuntu)

Enviado em 01/02/2012 - 18:08h

Eu organizei o Codigo... ...

Todo Com Funções....
eu pesquisei no google em muitos sites gringos e
vi que tem que declarar mesmo as functions e depois invocar elas...

Tu tens razão fdmarp

ai vai o codigo refeito;

da uma analizada....

#!/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



###################################################################################################################

# FUNCOES FILHAS

##################################################################################################################

#ANALIZA O LINK

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
}

###################################################################################################################

# FUNCAO MAE

##################################################################################################################

#CUIDA DA REDE

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
}

#################################################################################################################

#CHAMA A FUNÇÃO PRINCIPAL

Spider_Web

# FIM


4. Re: Script Para Monitorar Redes... Ajuda!! [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 02/02/2012 - 13:02h

Cara ... testei aqui e funcionou legal!!!!

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)

###################################################################################################################
# FUNCOES FILHAS
##################################################################################################################

#ANALIZA O LINK

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. Boa Modificação...

Cristiano dos Santos da Silva
maozinha_tribal

(usa Ubuntu)

Enviado em 02/02/2012 - 22:14h

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. Re: Script Para Monitorar Redes... Ajuda!! [RESOLVIDO]

hugo
hugogpd

(usa Ubuntu)

Enviado em 02/02/2012 - 23:48h

pow fico grande esse negócio, por 300 mango eu faço isso numa boa, me da umas 2 horas e duas latinhas de cerveja e fica pronto heheh


7. RESOLVIDO

Cristiano dos Santos da Silva
maozinha_tribal

(usa Ubuntu)

Enviado em 03/02/2012 - 23:38h

Valeu fdmarp ...

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. Re: Script Para Monitorar Redes... Ajuda!! [RESOLVIDO]

Joao
stack_of

(usa Slackware)

Enviado em 03/02/2012 - 23:44h

Você pode utilizar o mailx e o postfix para enviar emails.


9. Re: Script Para Monitorar Redes... Ajuda!! [RESOLVIDO]

hugo
hugogpd

(usa Ubuntu)

Enviado em 04/02/2012 - 10:17h

que é isso, tava zuando, se eu tivesse tempo (pra estudar tbm) até dava uma mãozinha!
Boa sorte