Linkswitch (The POG)
Publicado por George Mattos 04/11/2008
[ Hits: 6.221 ]
Esse script provê de forma simples e eficiente uma redundância entre dois links de internet (sem load balance), sendo um link principal e o outro de backup.
Na verdade isso é uma POG testada aqui na empresa que eu trabalho, e funciona bem!
#!/bin/bash # Observacoes # # Esse script prove de forma simples e eficiente uma redundancia entre # dois links de internet (sem load balance), sendo um link principal e o outro de backup. # # Esse script depende do programa iproute2 # # Adicione a linha abaixo em /etc/init.d/networking: # /etc/linkswitch.sh # # Adicione a linha abaixo em /etc/crontab e reinicie o cron: # * * * * * root sh /etc/linkswitch.sh 21 >> /var/log/linkswitch.log # /etc/init.d/cron restart # # Edite o arquivo /etc/iproute2/rt_tables e adicione duas tabelas # 20 provedor1 # 30 provedor2 # # Depois configure uma rota padrao em cada uma delas e crie um arquivo de incializacao para # evitar que sejam apagadas caso ocorra um reboot no sistema, uma boa ideia seria coloca-las # em /etc/init.d/networking # ip route add default via <gateway_do_provedor1> table provedor1 # ip route add default via <gateway_do_provedor2> table provedor2 # # Escrito por George Matos, Fortaleza, 21 de Outubro de 2008 # Email do administrador MAILADMIN=administrador@suaempresa.com.br; export MAILADMIN # Gateway ativo GWUP=`ip route show | grep ^default | cut -d " " -f 3` # Gateway master GW1=1.2.3.4; export GW1 # Substitua pelo gateway do seu link principal # Gateway slave GW2=4.3.2.1; export GW2 # Substitua pelo gateway do seu link backup if [ $GWUP == $GW1 ]; then echo "$HOSTNAME: `date` - Rota default: master" else echo "$HOSTNAME: `date` - Rota default: slave" echo "$HOSTNAME: `date` - Verificando disponibilidade do link master..." route add -net 0.0.0.0 gw $GW1 metric 10 ping -I eth1 200.160.2.3 -c 5 -A > /dev/null if [ $? -eq 0 ]; then echo -e "$HOSTNAME: `date` - \e[32;1mLink master UP\e[m" route del -net 0.0.0.0 gw $GW2 metric 1 echo "O link principal esta se conectando com a internet!" | mail -s "Link principal voltou!" $MAILADMIN exit 0 else echo "$HOSTNAME: `date` - Link master off-line" echo "$HOSTNAME: `date` - Link slave on-line" route del -net 0.0.0.0 gw $GW1 metric 10 if [ -e /tmp/linkswitch.tmp ]; then rm /tmp/linkswitch.tmp exit 0 fi exit 0 fi fi echo "$HOSTNAME: `date` - Testando link master..." ping -I eth1 200.160.2.3 -c 5 -A > /dev/null if [ $? -eq 0 ]; then echo "$HOSTNAME: `date` - Link master on-line" else echo -e "$HOSTNAME: `date` - \e[31;1mLink master DOWN\e[m" echo "$HOSTNAME: `date` - Subindo link slave..." ip route del default ip route add default via $GW2 metric 1 >/tmp/linkswitch.tmp echo "Link slave on-line, isso pode ter ocorrido pela falha temporaria do link principal. Entre em contato com o seu provedor" | mail -s "AVISO! Seu link principal pode estar off-line" $MAILADMIN fi
Instalação automática do Nagios
Instala o Stardict Dicionario!
tuiteroPreguicoso1.0 - automatiza o envio de mensagens ao Twitter
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
SysAdmin ou DevOps: Qual curso inicial pra essa área? (3)
É cada coisa que me aparece! - não é só 3% (3)
Melhorando a precisão de valores flutuantes em python[AJUDA] (5)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta