#!/bin/bash
PATH=
/sbin
:
/usr/sbin
:
/bin
:
/usr/bin
# Informe abaixo o gateway primario
GW_PRIMARIO=
""
# Informe abaixo os IPs de teste do gateway primario
IP_TESTE_PRIMARIO1=
""
IP_TESTE_PRIMARIO2=
""
# Informe abaixo o gateway secundario
GW_SECUNDARIO=
""
# Informe abaixo os IPs de teste do gateway secundario
IP_TESTE_SECUNDARIO1=
""
IP_TESTE_SECUNDARIO2=
""
# Armazenar gateway padrao na variavel GW_ATUAL
GW_ATUAL=`
netstat
-nr |
awk
'$1 ~ /^[0.0.0.0]/ {print $2}'
`
# ATENCAO!!! A secao abaixo so deve ser alterada com absoluta certeza de que sabe o que esta fazendo!!!
# Funcao para troca do gateway
function
GATEWAY()
{
netstat
-nr |
awk
-
v
gw2=
"$GW2"
-
v
gw=
"$GW"
'NR >= 2 {if ($2 == gw2) print "route add -net " $1 FS "netmask " $3 " gw " gw > "/etc/network/gateway";}'
netstat
-nr |
awk
-
v
gw2=
"$GW2"
'NR >= 3 {if ($2 == gw2) print "route del -net " $1 FS "netmask " $3 " gw " gw2 > "/etc/network/gateway_del";}'
while
read
ROTA2
do
echo
-e
"`$ROTA2`"
done
<
/etc/network/gateway_del
while
read
ROTA
do
echo
-e
"`$ROTA`"
done
<
/etc/network/gateway
}
# Backup das rotas existentes
echo
"#!/bin/bash"
>
/etc/network/rotas
.sh
echo
"# Rotas Atuais coletadas pelo /etc/init.d/roteamento.sh"
>>
/etc/network/rotas
.sh
netstat
-nr |
awk
'length($2) > 7'
|
awk
'NR > 2 {print "route add -net " $1 FS "netmask " $3 " gw " $2}'
>>
/etc/network/rotas
.sh
# Teste das redes
if
[ $GW_ATUAL = $GW_PRIMARIO ]
then
ping
-c4 $IP_TESTE_PRIMARIO1 >>
/dev/null
if
[ $? =
"0"
]
then
echo
`
date
`
"Rede Primaria OK"
>>
/etc/network/gateway
.log
else
ping
-c4 $IP_TESTE_PRIMARIO2 >>
/dev/null
if
[ $? =
"0"
]
then
echo
`
date
`
"Rede Primaria OK"
>>
/etc/network/gateway
.log
else
# Troca de Gateway
GW=$GW_SECUNDARIO
GW2=$GW_PRIMARIO
GATEWAY
echo
`
date
`
"Rede Secundaria Ativada"
>>
/etc/network/gateway
.log
exit
fi
fi
elif
[ $GW_ATUAL = $GW_SECUNDARIO ];
then
ping
-c4 $IP_TESTE_SECUNDARIO1 >>
/dev/null
if
[ $? =
"0"
]
then
echo
`
date
`
"Rede Secundaria OK"
>>
/etc/network/gateway
.log
else
ping
-c4 $IP_TESTE_SECUNDARIO2 >>
/dev/null
if
[ $? =
"0"
]
then
echo
`
date
`
"Rede Secundaria OK"
>>
/etc/network/gateway
.log
else
# Troca de Gateway
GW=$GW_PRIMARIO
GW2=$GW_SECUNDARIO
GATEWAY
echo
`
date
`
"Rede Primaria Ativada"
>>
/etc/network/gateway
.log
exit
fi
fi
fi