Failover WAN entre dois links
Publicado por Phillipe Farias Costa (última atualização em 02/03/2017)
[ Hits: 2.221 ]
Homepage: br.linkedin.com/pub/phillipe-farias/53/b2a/13b/
Script desenvolvido para realizar o processo de FailOver WAN entre dois links.
Como requisito, é necessário a instalação do software sendEmail para envio dos logs por e-mail. Entretanto, o mesmo pode ser alterado a forma de envio.
#!/bin/bash #===============================================================================# # FailOver WAN # # # # Created by.: pH # # Contact.: phillipe@phconsultoria.com.br # # Version.: 1.0 # # # # Requirements.: Application sendEmail installed # # # #===============================================================================# #==============# #=== Settings ===# #==============# #=== General ===# log=/var/log/failover_wan.log # Set the file log check_delay="120" # Set the time for check gateways gw01name="gwoperator01" # Name for Gateway (Telecom Operator) gw02name="gwoperator02" # Name for Gateway (Telecom Operator) packagelost=20 #Set the packages lost for gateways #=== Network ===# gw01=xxx.xxx.xxx.xxx # Primary Gateway gw02=xxx.xxx.xxx.xxx # Secondary Gateway iface01=ethx # Network adapter for gw01 iface02=ethx # Network adapter for gw02 #=== Mail Settings ===# server="mail.domain.com" # Mail server FQDN port="587" # Port mail server (SMTP) user="no-reply@domain.com" # Account of domain password="password" # Passoword for account fo domain sender="no-reply@domain.com" # User Sender recipients="support@domain.com" # Account you received the email cc="it@domain.com" # Another Account you received the email (With copy) #=== Commands ===# ip=/sbin/ip # ip command (full path) ping=/bin/ping # ping command ( full path ) grep=/bin/grep # grep command ( full path ) awk=/usr/bin/awk #awk command ( full path ) cut=/bin/cut # cut command ( full path ) sleep=/usr/bin/sleep # sleep command ( full path ) tail=/bin/tail # tail command ( full path ) sendemail=/usr/local/bin/sendEmail # sendEmail comand ( full path ) #=== Monitor ===# link01_state=$($ping -c 10 -I $iface01 $ip_monitor | $awk '{ print }' | $grep "0% packet loss" | $awk '{ print $6 $7 $8 }' | $cut -d % -f 1) link02_state=$($ping -c 10 -I $iface02 $ip_monitor | $awk '{ print }' | $grep "0% packet loss" | $awk '{ print $6 $7 $8 }' | $cut -d % -f 1) ip_monitor=200.221.2.45 # Set the IP Monitor. By default, is usaged the IP Address of uol.com.br. #==================================# #=== Primary Configuration ===# #==================================# # The primary configuration, apply the traffic for gateway gw01. $ip route del default via $gw01 $ip route replace default via $gw01 #===============================# #=== Start FailOver Function ===# #===============================# failover () { while [ 1 ] do # Checking the communication with WAN Primary if [ $link01_state -le $packagelost ] then $ip route replace default via $gw01 else #==========================================# #== Change the traffic for gateway gw02 ===# #==========================================# $ip route replace default via $gw02 #=========================================# #=== Check if the secundary link is UP ===# #=========================================# if [ $link02_state -le $packagelost ] then echo "#================================================================================================#" >> $log echo "# FailOver Monitor #" >> $log echo "# #" >> $log echo "# The secundary Link ($gw02name) is UP on `date +%d/%m/%y-%H:%M:%S` #" >> $log echo "# #" >> $log echo "# Summary.: #" >> $log echo "# #" >> $log echo "# The Primary Link $gw01name it is DOWN with $link01_state % Packages Lost! #" >> $log echo "# #" >> $log echo "#================================================================================================#" >> $log echo >> $log echo >> $log #==========================# #=== Send Logs ===# #==========================# subject="FailOver Monitor - Primary Link is Down!" $tail -n 12 $log | $sendemail -s "$server:$port" -o tls=no -xu "$user" -xp "$password" -f "$sender" -u "$subject" -t "$recipients" -cc "$cc" $sleep $check_delay #==========================================# #=== Check if the primary link Recovery ===# #==========================================# $ip route replace $ip_monitor/32 via $gw01 if [ $link01_state -le $packagelost ] then $ip route replace default via $gw01 $ip route del $ip_monitor/32 via $gw01 echo "#================================================================================================#" >> $log echo "# FailOver Monitor #" >> $log echo "# #" >> $log echo "# The primary Link ( $gw01name) RECOVERY on `date +%d/%m/%y-%H:%M:%S` #" >> $log echo "# #" >> $log echo "#================================================================================================#" >> $log echo >> $log echo >> $log #==========================# #=== Send Logs ===# #==========================# subject="FailOver Monitor - Primary Link Recovery!" $tail -n 12 $log | $sendemail -s "$server:$port" -o tls=no -xu "$user" -xp "$password" -f "$sender" -u "$subject" -t "$recipients" -cc "$cc" else echo "#================================================================================================#" >> $log echo "# FailOver Monitor #" >> $log echo "# #" >> $log echo "# The primary Link ( $gw01name) remains DOWN on `date +%d/%m/%y-%H:%M:%S` #" >> $log echo "# #" >> $log echo "#================================================================================================#" >> $log echo >> $log echo >> $log #==========================# #=== Send Logs ===# #==========================# subject="FailOver Monitor - Primary Link Remains Down!" $tail -n 12 $log | $sendemail -s "$server:$port" -o tls=no -xu "$user" -xp "$password" -f "$sender" -u "$subject" -t "$recipients" -cc "$cc" fi fi fi $sleep $check_delay done } failover
Unificando arquivos de bloqueio e liberação no squid
Verifica Falha Humana de Segurança em e-mail (usada por SPAMERS)
Verificação e otimização do banco de dados MySQL
Backup de Repositórios Subversion
Nenhum comentário foi encontrado.
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
Como testar Standard Hotplug Controller (1)
Trocando modo IDE por AHCI (1)
Desempenho abaixo do esperado - travadas e congelamento do sistema ope... (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