[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