Julio C. Neves wrote:
>
> Fala Fábio,
> isso não é piada não, mas pode considerar um outro script Tabajara.
> Olha só:
>
> case $STATUS_LINK1:$STATUS_LINK2 in
> UP:UP) echo "Não esquenta a piriquita, tah tudo certo" ;;
> DOWN:DOWN) echo "Ferrou, os dois links estao fora do ar" ;;
> UP:DOWN) echo "Mudando rota para link1"
> *) echo "Mudando rota para link2"
> esac
>
> Agora um conselho de amigo: evite usar nomes de variáveis em maiúsculas.
> Todas as variáveis do sistema são escritas assim e, como vc não conhece
> todas (eu tb não), pode fazer uma grande lambança.
> --
> Abraços,
> Julio
> Curso de Shell em Brasília a partir de 08/12
> http://www.trainingtecnologia.com.br/novo_site/shell.htm
> <http://www.trainingtecnologia.com.br/novo_site/shell.htm>
> Telefone: (61) 3352-7785
> :wq
>
> >
> > Ae lista! :D
> >
> > Versão final do script de teste tabajara...
> >
> > #!/bin/sh
> > #
> > # Fri Nov 30 14:25:46 BRST 2007
> > #
> > #Teste de conexão
> >
> > #Declarando variaveis
> > IPTESTE="200.160.2.3"
> > GW_IF1="192.168.0.1"
> > GW_IF2="192.168.3.1"
> >
> > #Testa saida pelo link 1
> > route add -host $IPTESTE gw $GW_IF1 eth1
> > ping -q -c 2 $IPTESTE -I eth1 > /dev/null 2>&1 && STATUS_LINK1="UP" ||
> > STATUS_LINK1="DOWN"
> > route del -host $IPTESTE gw $GW_IF1 eth1
> >
> > #Testa saida pelo link 2
> > route add -host $IPTESTE gw $GW_IF2 eth2
> > ping -q -c 2 $IPTESTE -I eth2 > /dev/null 2>&1 && STATUS_LINK2="UP" ||
> > STATUS_LINK2="DOWN"
> > route del -host $IPTESTE gw $GW_IF2 eth2
> >
> > #Tratando resultados
> > if [ $STATUS_LINK1 == UP ] && [ $STATUS_LINK2 == UP ]; then
> >
> > echo "Não esquenta a piriquita, tah tudo certo"
> >
> > elif [ $STATUS_LINK1 == DOWN ] && [ $STATUS_LINK2 == DOWN ]; then
> >
> > echo "Ferrou, os dois links estao fora do ar"
> >
> > elif [ $STATUS_LINK1 == UP ] && [ $STATUS_LINK2 == DOWN ]; then
> >
> > echo "Mudando rota para link1"
> >
> > elif [ $STATUS_LINK1 == DOWN ] && [ $STATUS_LINK2 == UP ]; then
> >
> > echo "Mudando rota para link2"
> >
> > fi
> >
> > Queria agradecer a mim mesmo por ter me ajudado na lista. (não é critica
> > só piada em homenagem ao Júlio que é o maior piadista que já li =P )
> >
> > Fábio Gomes dos Santos
> >
> > PS: Se alguem tiver alguma dica pra melhorar... :)
> >
> >
> >
>
> --
> Abraços,
> Julio
> Curso de Shell em Brasília a partir de 08/12
> http://www.trainingtecnologia.com.br/novo_site/shell.htm
> <http://www.trainingtecnologia.com.br/novo_site/shell.htm>
> Telefone: (61) 3352-7785
> :wq
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
Finalizado!! :)
Esta nova versão testara dois ip antes de mudar a rota...
$ cat redundancia_v2.sh
#!/bin/sh
#
# Fri Nov 30 14:25:46 BRST 2007
# Copyright (c) 2007, Fabio Gomes All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
# * Neither the name of the Fabio Gomes nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#Teste de conexão
#Declarando variaveis
IPTESTE="200.160.2.3"
IPTESTE2="64.233.169.99"
GW_IF1="192.168.0.1"
GW_IF2="192.168.3.1"
#Testa saida pelo link 1
#Setando rota para os ip's de teste
route add -host $IPTESTE gw $GW_IF1 eth1
route add -host $IPTESTE2 gw $GW_IF1 eth1
#Testando conexão
ping -q -c 2 $IPTESTE -I eth1 > /dev/null 2>&1 &&
STATUS_LINK1="UP" || STATUS_LINK1="DOWN"
#Só para ter certeza vamos testar outro ip
if [ $STATUS_LINK1 == DOWN ]; then
ping -q -c 2 $IPTESTE2 -I eth1 > /dev/null 2>&1 &&
STATUS_LINK1="UP" || STATUS_LINK1="DOWN"
fi
#Deletando rotas de teste
route del -host $IPTESTE gw $GW_IF1 eth1
route del -host $IPTESTE2 gw $GW_IF1 eth1
#Testa saida pelo link 2
#Setando rota para os ip's de teste
route add -host $IPTESTE gw $GW_IF2 eth2
route add -host $IPTESTE2 gw $GW_IF2 eth2
#Testando conexão
ping -q -c 2 $IPTESTE -I eth2 > /dev/null 2>&1 &&
STATUS_LINK2="UP" || STATUS_LINK2="DOWN"
#Só para ter certeza vamos testar outro ip
if [ $STATUS_LINK2 == DOWN ]; then
ping -q -c 2 $IPTESTE2 -I eth2 > /dev/null 2>&1 &&
STATUS_LINK2="UP" || STATUS_LINK2="DOWN"
fi
#Deletando rotas de teste
route del -host $IPTESTE gw $GW_IF2 eth2
route del -host $IPTESTE2 gw $GW_IF2 eth2
#Tratando resultados
case $STATUS_LINK1:$STATUS_LINK2 in
UP:UP)
echo "Não esquenta a piriquita, está tudo certo"
;;
UP:DOWN)
echo "Mudando rota para o link1"
;;
DOWN:UP)
echo "Mudando rota para o link2"
;;
*)
echo "Ferrou!!! Cairam os dois links... Blackout?"
;;
esac
Fábio Gomes dos Santos