Cron não roda script Corretamente [RESOLVIDO]

1. Cron não roda script Corretamente [RESOLVIDO]

Roberto Costa
asparion

(usa CentOS)

Enviado em 09/07/2013 - 16:16h

Boa tarde. fiz um script para redundancia de links, se um link cair o outro sobe, e o link que caiu voltar ele assume. quando rodo a mao ele funciona perfeitamente, mas quando agendo ele no crontab ele faz a leitura de forma errada. ex:




Rodando a mao. ./redundancia.sh

#!/bin/bash
# Gateway ativo
GWUP=`ip route show | grep ^default | cut -d " " -f 3`
GW1=192.168.25.1; export GW1
GW2=192.168.24.1; export GW2
if [ $GWUP == $GW1 ]; then
echo "`date` - Rota default e a Principal! Link 35 megas Gateway 192.168.25.1"
else
echo "`date` - Rota default e a Slave! Link 10 megas Gateway 192.168.24.1"


a resposta é nos log é.

Tue Jul 9 15:33:17 BRT 2013 - Rota default e a Principal! Link 35 megas Gateway 192.168.25.1
Tue Jul 9 15:33:17 BRT 2013 - Testando Link Principal...
Tue Jul 9 15:33:17 BRT 2013 - Link Principal UP!

(ou seja esta correto é assim mesmo que é pra ser)

mas se agendo no crontab
* * * * * /etc/scripts/redundancia.sh

a resposta no log é

Tue Jul 9 13:59:01 BRT 2013 - Rota default e a Slave! Link 10 megas Gateway 192.168.24.1
Tue Jul 9 13:59:01 BRT 2013 - Verificando a disponibilidade do link principal de 35 megas...
Tue Jul 9 13:59:01 BRT 2013 - Link pricipal voltou!

(essa resposta so é pra acontecer se o link 1 tive parado e o gateway for direfente do gateway 1)

porque se o link cair e ele fazer essa leitura ele nao vai ler o restante o script e fazer corretamente o que foi programado sendo que rodando manual vai certinho..

alguem pode me ajudar, saber porque o cron nao roda corretamente.

obrigadoo!!!!!!!!!.................



  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 09/07/2013 - 19:04h

Apenas para eliminar dúvidas sobre eventuais variáveis de ambiente que possam estar atrapalhando, coloque as seguintes linhas logo no começo do script, antes de você rodar qualquer comando, e veja se isso ajuda.

export LC_ALL=C
export PATH=/bin:/usr/bin:/sbin:/usr/sbin


(A hipótese é de que seu sistema esteja trabalhando com Português por default. Nesse caso, pode ser que a saída do comando ip route ... não produza a string que o grep está procurando.)

3. Segue o Script Completo

Roberto Costa
asparion

(usa CentOS)

Enviado em 09/07/2013 - 16:55h

Abaixo o script completo...

Esse é o Script completo...

#!/bin/bash

# Gateway ativo
GWUP=`ip route show | grep ^default | cut -d " " -f 3`

# Gateway Principal
GW1=192.168.25.1; export GW1
# Gateway Slave
GW2=192.168.24.1; export GW2

if [ $GWUP == $GW1 ]; then
echo "`date` - Rota default e a Principal! Link 35 megas Gateway 192.168.25.1" >> /var/log/redundancia/redundancia.log
else

echo "`date` - Rota default e a Slave! Link 10 megas Gateway 192.168.24.1" >> /var/log/redundancia/redundancia.log

echo "`date` - Verificando a disponibilidade do link principal de 35 megas" >> /var/log/redundancia/redundancia.log
route add -net 0.0.0.0 gw $GW1
ping -I eth1 200.160.2.3 -c 5 -A > /dev/null
if [ $? -eq 0 ]; then

echo "`date` - Link pricipal voltou!" >> /var/log/redundancia/redundancia.log
route del -net 0.0.0.0 gw $GW2
exit 0
else

echo "`date` - Link principal ainda nao voltou..." >> /var/log/redundancia/redundancia.log
echo "`date` - Link de backup sera mantido." >> /var/log/redundancia/redundancia.log
route del -net 0.0.0.0 gw $GW1
exit 0
fi
fi

echo "`date` - Testando Link Principal..." >> /var/log/redundancia/redundancia.log
ping -I eth1 200.160.2.3 -c 5 -A > /dev/null

if [ $? -eq 0 ]; then
echo "`date` - Link Principal UP!" >> /var/log/redundancia/redundancia.log
else

echo "`date` - Link Principal DOWN..." >> /var/log/redundancia/redundancia.log
echo "`date` - Subindo Link de backup..." >> /var/log/redundancia/redundancia.log
route del -net 0.0.0.0 gw $GW1
ip route add default via $GW2
fi



4. Re: Cron não roda script Corretamente [RESOLVIDO]

Marcelo Theodoro
MarceloTheodoro

(usa Debian)

Enviado em 09/07/2013 - 17:55h

Hmm..
Interessante!

Me diga uma coisa: Se você rodar ele a mão, o script solta QUALQUER saída que esteja direcionada pra tela? Ou seja, qualquer saída que não esteja sendo gravada nos logs?






___________________________
Att, Marcelo Theodoro.
I'm not anti-social; I'm just not user friendly.


5. Re: Cron não roda script Corretamente [RESOLVIDO]

Marcelo Theodoro
MarceloTheodoro

(usa Debian)

Enviado em 09/07/2013 - 17:58h

Alias, acabei de notar que tem sim.


echo "`date` - Rota default e a Principal! Link 35 megas Gateway 192.168.25.1"
echo "`date` - Rota default e a Slave! Link 10 megas Gateway 192.168.24.1"
echo "`date` - Verificando a disponibilidade do link principal de 35 megas"


Direcione essas saídas para o log, ou então delete a linha e tente novamente.




___________________________
Att, Marcelo Theodoro.
I'm not anti-social; I'm just not user friendly.


6. Ops....

Roberto Costa
asparion

(usa CentOS)

Enviado em 09/07/2013 - 18:47h

Ops rsrs arrumei o script do post, porque na verdade já estava.

se rodar a mao vai tudo certinho ja testei, tirei o cabo do link1 rodei o script e funfou, coloquei o cabo e rodei o script e voltou o link 1 assumiu novamente.

nao entendi pq no cron nao faz corretamente

a mao fica assim:
a resposta é nos log é.

Tue Jul 9 15:33:17 BRT 2013 - Rota default e a Principal! Link 35 megas Gateway 192.168.25.1
Tue Jul 9 15:33:17 BRT 2013 - Testando Link Principal...
Tue Jul 9 15:33:17 BRT 2013 - Link Principal UP!

Sendo que assim esta certo porque viu que o link1 esta ativo e nao faz mais nada. so trocaria se o link 1 nao respondesse o ping que ele faz

no cron fica assim:
a resposta no log é

Tue Jul 9 13:59:01 BRT 2013 - Rota default e a Slave! Link 10 megas Gateway 192.168.24.1
Tue Jul 9 13:59:01 BRT 2013 - Verificando a disponibilidade do link principal de 35 megas...
Tue Jul 9 13:59:01 BRT 2013 - Link pricipal voltou!

e aqui ta mostrando errado pois o link1 ta ativo e o gateway padrao é o link1 e nao o link2 com esse gateway que ta mostrando.

ai o que acontece, se o link 1 cair ele ja vai verificar e ver que o link principal esta como link2 ai nao vai tomar a acao caso o lik1 tenha caido, o script esta certo porque a mao roda tudo certo..

não entendi o que acontece..... rsrsrs


7. Perfect.

Roberto Costa
asparion

(usa CentOS)

Enviado em 09/07/2013 - 19:58h

Perfeito era o que faltava pro script, muito bom Paulo muito obrigado. Resolveu.
Com isso vou ajudar outras pessoas que eu vi procurando sobre o mesmo problema.
obrigado aos dois pela ajuda abraços.......