[FUG-BR] Script para troca automatica de rota.
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. -- Alessandro de Souza Rocha Administrador de Redes e Sistemas FreeBSD-BR User #117 Long live FreeBSD Powered by (__) \\\'',) \/ \ ^ .\._/_) www.FreeBSD.org - Histórico: http://www.fug.com.br/historico/html/freebsd/ Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
Re: [FUG-BR] Script para troca automatica de rota.
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 21 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 21 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 21 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 21 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: luanta...@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
Re: [FUG-BR] Script para troca automatica de rota.
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 luan...@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 21 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 21 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 21 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 21 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 # --