Failover WAN entre dois links
Publicado por Phillipe Farias Costa (última atualização em 02/03/2017)
[ Hits: 2.538 ]
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
Backup de Maquina Virtual (Vmware)
Script que envia email para um Relay sem autenticação.
Script Firewall Iptables + compartilhar internet
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
E aí? O Warsaw já está funcionando no Debian 13? (12)
copiar library para diretorio /usr/share/..... su com Falha na a... (1)
Problema em SSD ao dar boot LinuxMint LMDE FAYE 64 (3)









