Páginas

quarta-feira, 9 de janeiro de 2013

Script Para Redundancia Atualizado

Olá a todos!!!

Criei uma versão melhor do script de redundância de links dedicados, e a diferença agora é que ele testa apenas o link principal e caso esteja offline, ele muda para o link secundário. Quando o link principal volta, o script retorna para ele.

#!/bin/bash
# Script de redundancia de links dedicados
# Desenvolvido por Rodrigo Manzzato Alves Garcia em 08/10/2012
# Atualizado em 20/12/2012

PATH=/sbin:/usr/sbin:/bin:/usr/bin

# Informe abaixo o gateway principal
GW_PRIMARIO=""
# Informe abaixo os IPs primários de teste
IP_TESTE_PRIMARIO1=""
IP_TESTE_PRIMARIO2=""
# Informe abaixo o IP do link primario
IP_PRIMARIO_ROUTER=""
# Informe abaixo o gateway do link secundario
GW_SECUNDARIO=""
# Informe abaixo o IP do link secundario
IP_SECUNDARIO_ROUTER=""

# 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 > 1 {if ($2 == gw2) print "route add -net " $1 FS "netmask " $3 " gw " gw > "/etc/network/gateway";}'
        netstat -nr | awk -v gw2="$GW2" 'NR > 2 {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
netstat -nr | awk 'length($2) > 7' | awk 'NR > 1 {print "route add -net " $1 FS "netmask " $3 " gw " $2}' >> /etc/network/rotas.sh

# Teste das redes
ping -c4 $IP_TESTE_PRIMARIO1 -I $IP_PRIMARIO_ROUTER >> /dev/null
    if [ $? = "0" ]
        then   
            if [ $GW_ATUAL = "$GW_PRINCIPAL" ]
                then           
                    exit
                else    # Troca de Gateway caso o link atual não for o principal
                    GW=$GW_PRIMARIO
                    GW2=$GW_SECUNDARIO
                    GATEWAY
                    echo `date` "Rede Principal Ativada" >> /etc/network/gateway.log
                    exit
            fi
        else   
            ping -c4 $IP_TESTE_PRIMARIO2 -I $IP_PRIMARIO_ROUTER >> /dev/null
            if [ $? = "0" ]
                then   
                    exit
                else    # Troca de Gateway caso o link atual não estiver respondendo
                    GW=$GW_SECUNDARIO
                    GW2=$GW_PRIMARIO
                    GATEWAY
                    echo `date` "Rede Secundaria Ativada" >> /etc/network/gateway.log
                    exit
            fi
    fi

Espero que seja útil!!!

Até a próxima!!!

quarta-feira, 2 de janeiro de 2013

Plugin para Nagios

Olá a Todos!!!

Recentemente instalei o Nagios a fim de monitorar meus servidores e roteadores. Senti falta porém de um plugin que checasse a memória ram. Desenvolvi então um plugin em shell script chamado "check_ram":

#!/bin/bash
# Desenvolvido por Rodrigo Garcia em 16/01/2013
# Sobrevivi ao fim do mundo!!!
PATH=/sbin:/usr/sbin:/bin:/usr/bin

TMEM=`free -m | awk 'NR == 2 {print $2}'`
UMEM=`free -m | awk 'NR == 3 {print $3}'`
FMEM=`free -m | awk 'NR == 3 {print $4}'`
PMEM=`echo $((UMEM * 100 / $TMEM))`


if [ $PMEM -lt $1 ]
        then
                echo "Total(MB)= $TMEM, Uso(MB)= $PMEM%, Livre(MB)= $FMEM OK"
                exit 0
        elif [ $PMEM -ge $1  ] && [ $PMEM -lt $2 ]
                then
                        echo "Total(MB)= $TMEM, Uso= $PMEM% , Livre(MB)= $FMEM Atencao!!!"
                        exit 1
        elif [ $PMEM -ge $1 ]
                then
                        echo "Total(MB)= $TMEM, Uso(MB)= $PMEM%, Livre(MB)= $FMEM Critico!!!"
                        exit 2
fi

Sua execução deve conter como parâmetro os níveis de warning e critical pelo valor da porcentagem, por exemplo:

./check_ram 80 90

É isso aí, espero que seja útil!!!

Até a próxima!!!