[FUG-BR] Script para troca automatica de rota.
Pedro Madsen
pedro em madnix.com
Segunda Janeiro 24 15:50:11 BRST 2011
vc pode conjugar com o ifstated do ports, faz isso muito bem:
http://www.freebsd.org/cgi/cvsweb.cgi/ports/net/ifstated/
<http://www.freebsd.org/cgi/cvsweb.cgi/ports/net/ifstated/>
<http://www.freebsd.org/cgi/cvsweb.cgi/ports/net/ifstated/>Abs!
Em 24 de janeiro de 2011 15:45, Luan Tasca <luanfug em gmail.com> escreveu:
> Uso esse script em um cliente, ele é meio grande mais traz um bom
> resultado..
>
> #
>
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> export TERM=linux
> export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
>
> # roteadores locais
> dgw="200.215.41.1" # Oi
> gw2="189.127.142.41" # ?
> rota_atual=`/sbin/route -n | grep UG | awk '{printf $2}'`
>
> # interface conectada aos roteadores
> if_dgw="eth1" # Oi
> if_gw2="eth4" # ?
>
> # ips da internet para teste de conexao
> ip_teste1="8.8.8.8"
> ip_teste2="200.176.2.10"
>
> # limpando terminal...
> clear
>
> # adicionando rotas temporarias para teste
> echo + adicionando rotas temporarias para o teste do primeiro roteador...
> echo " "
> /sbin/route add -host $ip_teste1 gw $dgw $if_dgw
> /sbin/route add -host $ip_teste2 gw $dgw $if_dgw
> /sbin/route -n
> sleep 2
>
> # testando o link padrao de navegacao
> echo " "
> echo + testando roteador padrao... pingando o primeiro ip de teste...
> ping -q -c 2 $ip_teste1 -I $if_dgw > /tmp/defaultgw1.link 2>&1 &&
> status_dgw="UP" || status_dgw="DOWN"
> if [ $status_dgw == DOWN ]; then
> echo - FALHA! verificando conectividade no segundo ip de teste
> atraves da rota padrao...
> ping -q -c 2 $ip_teste2 -I $if_dgw > /tmp/defaultdgw2.link
> 2>&1 && status_dgw="UP" || status_dgw="DOWN"
> rm /tmp/defaultdgw2.link
> fi
> sleep 2
>
> # removendo rotas temporarias de teste
> echo + removendo rotas temporarias para o teste do roteador padrao...
> /sbin/route del -host $ip_teste1 gw $dgw $if_dgw
> /sbin/route del -host $ip_teste2 gw $dgw $if_dgw
> sleep 2
>
> # limpando arquivos temporarios
> echo + removendo arquivos de logs do primeiro teste...
> rm /tmp/defaultgw1.link
> sleep 2
>
> # testando segunda rota padrao
> clear
> echo + adicionando rotas temporarias para o teste do segundo roteador...
> echo " "
> /sbin/route add -host $ip_teste1 gw $gw2 $if_gw2
> /sbin/route add -host $ip_teste2 gw $gw2 $if_gw2
> /sbin/route -n
> sleep 2
>
> # testando o link padrao de navegacao
> echo " "
> echo + testando o roteador secundario... pingando o primeiro ip de teste...
> ping -q -c 2 $ip_teste1 -I $if_gw2 > /tmp/defaultgw3.link 2>&1 &&
> status_gw2="UP" || status_gw2="DOWN"
> if [ $status_gw2 == DOWN ]; then
> echo - FALHA! verificando conectividade no segundo ip de teste
> atraves da rota secundaria...
> ping -q -c 2 $ip_teste2 -I $if_gw2 > /tmp/defaultgw4.link 2>&1
> && status_gw2="UP" || status_gw2="DOWN"
> rm /tmp/defaultgw4.link
> fi
> sleep 2
>
> # limpando arquivos temporarios
> echo + removendo arquivos de logs do segundo teste...
> rm /tmp/defaultgw3.link
> sleep 2
>
> # removendo rotas temporarias de teste
> echo + removendo rotas temporarias para o teste do segundo roteador...
> /sbin/route del -host $ip_teste1 gw $gw2 $if_gw2
> /sbin/route del -host $ip_teste2 gw $gw2 $if_gw2
> sleep 2
>
> #
>
> ----------------------------------------------------------------------------------
> # tratamento dos resultados..
> #
>
> ----------------------------------------------------------------------------------
>
> case $status_dgw:$status_gw2 in
>
> UP:UP)
> echo " "
> echo - Sem problemas de Conectividade - usando o link Oi como
> padrao. . .
> if [ $rota_atual == $dgw ];
> then echo - Sem necessidade de ajustes. . .
> else
> /sbin/route add default gw $dgw
> /sbin/route del default gw $gw2
> fi
> echo " "
> ;;
>
> UP:DOWN)
> echo " "
> echo - ATENCAO! problemas no link secundario!
> alterando navegacao para Oi!
> if [ $rota_atual == $dgw ];
> then echo - Gateway padrao ja setado para Oi!
> else
> /sbin/route add default gw $dgw
> /sbin/route del default gw $gw2
> fi
> echo " "
> ;;
>
> DOWN:UP)
> echo " "
> echo - ATENCAO! problemas no roteador padrao Oi! -
> alterando navegacao para o link secundario!
> if [ $rota_atual == $gw2 ];
> then echo - configuracoes ok!
> else
> /sbin/route add default gw $gw2
> /sbin/route del default gw $dgw
> fi
> echo " "
> ;;
>
> DOWN:DOWN)
> echo " "
> echo - ATENCAO! os links nao estao respondendo! entre
> em contato com a provedora e verifique os cabos!
> echo " "
> ;;
>
> *)
> exit 0
> ;;
> esac
>
> #
>
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> --
>
>
> Luan Tasca
> e-mail: luantasca em gmail.com
> tel: 48 - 99494665
> twitter: @luantasca
> site: www.beersd.com.br
> BSD User: 51785
>
> |/- Amar é... deletar o Windows do HD !
> /|
>
> |/
> /|
>
>
>
> Em 24-01-2011 15:27, Alessandro de Souza Rocha escreveu:
> > Boa tarde, alguem de vcs aqui na lista tem alguns script para troca de
> > rota default quando um link
> > ou adsl cai.
> > pesquisando no google so tenho carp, so que nao tenho 2 maquina para
> > fazer com carp.
> >
>
>
>
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>
Mais detalhes sobre a lista de discussão freebsd