shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Checar serviço


From: André Saunite
Subject: Re: [shell-script] Checar serviço
Date: Mon, 24 Nov 2008 14:16:15 -0200

Olá,

Algum tempo atrás eu precisei criar um script que enviasse um e-mail
no caso do IP da máquina ter sido alterado, tá meio tosco mas acho que
você pode usar ele como ponto de partida.

#!/bin/bash
#
# ############################################################################
#
# Name: getIP
#
# Description
#       Verify if the IP address has changed and, if so, send a mail with new IP
#       address
#
# Details
#       This script is intended to be used for machines that are not directly
#       connected to the internet, and therefore don't have a valid IP address,
#       thats why this script uses a web browser and connect to
#       http://whatismyip.com instead of simple use the ifconfig command
#
# Author
#       Andre Saunite
#
# E-mail
#       address@hidden
#
# Date of Creation
#       2008-02-09
#
# Table of modifications
# +---------------------------------------------------------------------+
# | Modified                    |       Description
         | Modifier                      |
# |---------------------------------------------------------------------|
# |     2008-02-09                      |       Creation of the script
 | Andre Saunite         |
# |     2008-02-12                      |       Function to clear log
 | Andre Saunite         |
# +---------------------------------------------------------------------+
#
# ############################################################################

# Definition of variables
PREVIOUS_IP='/root/getIP/previous_ip'
LINKS='/usr/bin/links'
LINKS_OPTIONS='-dump'
LOG='/root/getIP/getIP.log'
TMPFILE='/root/getIP/ip.tmp'
TMPFILE2='/root/getIP/mail.tmp'
TOEMAIL='address@hidden'
EMAILACCOUNT='gmail'
MAIL='/usr/bin/nail'
MAXLOGLINES=5000
LOGTMP='/root/getIP/getIP-2.log'
IPSITE='http://whatismyip.com/automation/n09230945.asp'

# Function to Send the IP via e-mail
sendNewIP() {
        echo "Your IP Address has changed! Your new IP is: $(cat
$TMPFILE)" > $TMPFILE2
        echo "Bellow is the full log of the changes:" >> $TMPFILE2
        echo >> $TMPFILE2
        cat $LOG >> $TMPFILE2
        $MAIL -A $EMAILACCOUNT -s "getIP Message: New IP detected"
$TOEMAIL < $TMPFILE2
        echo "$(date +"%Y-%m-%d %H:%M:%S"): E-mail with new IP sent." >> $LOG
        rm $TMPFILE2
}

# Function to clear log
clearLog() {
        LOGLINES=$(cat $LOG | wc -l)
        if [ $LOGLINES -gt $MAXLOGLINES ]; then
                tail -$(($(echo $LOGLINES / 2 | bc))) $LOG > $LOGTMP
                mv $LOGTMP $LOG
        fi
}

# Main

# Call logExists Function
echo "$(date) Starting getIP script" >> $LOG

# Get the current IP address
$LINKS $LINKS_OPTIONS $IPSITE | egrep -o '([0-9]{1,3}\.){3}[0-9]{1,3}'
> $TMPFILE

# Verify if current IP is the same as previous (If there were a previous)
if [ -e $PREVIOUS_IP ]; then
        # There were a previous IP
        echo "$(date +"%Y-%m-%d %H:%M:%S"): Previous IP address: $(cat
$PREVIOUS_IP)" >> $LOG
        echo "$(date +"%Y-%m-%d %H:%M:%S"): Current IP address: $(cat
$TMPFILE)" >> $LOG
                if [ ! "$(diff $PREVIOUS_IP $TMPFILE)" ]; then
                        # Previous and current IP are the same, so
don't send mail
                        echo "$(date +"%Y-%m-%d %H:%M:%S"): Current IP
and previous are the same. No e-mail will be sent." >> $LOG
                else
                        # Previous and current IP differs, so send new
IP via mail
                        echo "$(date +"%Y-%m-%d %H:%M:%S"): Current IP
and previous differ. Sending new IP via e-mail." >> $LOG
                        sendNewIP
                fi
else
        # No previous IP found, so send the IP via e-mail
        echo "$(date +"%Y-%m-%d %H:%M:%S"): No Previous IP found" >> $LOG
        sendNewIP
fi

# Call clearLog function
clearLog

# A little cleanup
cp $TMPFILE $PREVIOUS_IP
rm $TMPFILE

Abs,
André Saunite

2008/11/24 Bruno Gunter Fricke <address@hidden>:
> Pode-se tentar com um ps auxxx também.
>
> E concordo, o Nagios, Zabbix e diversos são para cuidar de uma rede. Fazer
> um NMS e nao para cuidar de uma máquina apenas.
>
> 2008/11/24 Raul Libório <address@hidden>
>
>> Ah... só complementando...
>> Com um service --status-all é possível checar todos os serviços. Daí
>> pra frente é só tratar a saída.
>>
>> abraços,
>> --
>>
>> Raul Libório
>> UniJorge Redes - www.redesfja.com
>> rauhmarutsªhotmailºcom
>> Linux user#4444581
>>
>> " Se você tem uma maçã e eu tenho uma maçã e, em seguida, trocarmos as
>> maçãs, eu e você ainda teremos uma maçã cada um. Mas se você tem uma
>> idéia e eu tenho uma idéia e trocarmos essas idéias, então cada um de
>> nós terá duas idéias. "
>>
>> George Bernard Shaw
>>
>> Dúvidas: enviar para /dev/null
>>
>> 2008/11/24 Raul Libório <address@hidden <rauhmaru%40gmail.com>>:
>>
>> > Cara... discordo de vc. Prefiro mil vezes usar um script do que ter de
>> > configurar o Nagios. Viva a simplicidade :)
>> > --
>> >
>> > Raul Libório
>> > UniJorge Redes - www.redesfja.com
>> > rauhmarutsªhotmailºcom
>> > Linux user#4444581
>> >
>> > " Se você tem uma maçã e eu tenho uma maçã e, em seguida, trocarmos as
>> > maçãs, eu e você ainda teremos uma maçã cada um. Mas se você tem uma
>> > idéia e eu tenho uma idéia e trocarmos essas idéias, então cada um de
>> > nós terá duas idéias. "
>> >
>> > George Bernard Shaw
>> >
>> > Dúvidas: enviar para /dev/null
>> >
>> >
>> >
>> > 2008/11/24 [DirectWeb] - Marcio
>> > <address@hidden<marcio%40directweb.com.br>
>> >:
>> >>
>> >> Para de inventar ... usa o Nagios, é perfeito pra isso!
>> >>
>> >>
>> >>
>> >> Att,
>> >>
>> >>
>> >> Marcio
>> >>
>> >>
>> >>
>> >> listas_internet escreveu:
>> >>> Pessoal,
>> >>>
>> >>> Se não me engano já apareceu aqui na lista um script que checava se um
>> >>> determinado serviço estava on-line e baseado nisso enviava um email,
>> >>> tentei fazer um e não fui capaz, procurei na net usando "Santo Google"
>> >>> e nada, poderiam me ajudar ?
>> >>> Agradeço muito.
>> >>>
>> >>> --Carlos
>> >>>
>> >>>
>> >>> ------------------------------------
>> >>>
>> >>> ----------------------------------------------------------
>> >>> Esta lista não admite a abordagem de outras liguagens de programação,
>> como perl, C etc. Quem insistir em não seguir esta regra será moderado sem
>> prévio aviso.
>> >>> ----------------------------------------------------------
>> >>> Sair da lista:
>> >>> address@hidden<shell-script-unsubscribe%40yahoogrupos.com.br>
>> >>> ----------------------------------------------------------
>> >>> Esta lista é moderada de acordo com o previsto em
>> http://www.listas-discussao.cjb.net
>> >>> ----------------------------------------------------------
>> >>> Servidor Newsgroup da lista: news.gmane.org
>> >>> Grupo: gmane.org.user-groups.programming.shell.brazil
>> >>>
>> >>> Links do Yahoo! Grupos
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>
>> >>
>> >> ------------------------------------
>> >>
>> >> ----------------------------------------------------------
>> >> Esta lista não admite a abordagem de outras liguagens de programação,
>> como perl, C etc. Quem insistir em não seguir esta regra será moderado sem
>> prévio aviso.
>> >> ----------------------------------------------------------
>> >> Sair da lista:
>> >> address@hidden<shell-script-unsubscribe%40yahoogrupos.com.br>
>> >> ----------------------------------------------------------
>> >> Esta lista é moderada de acordo com o previsto em
>> http://www.listas-discussao.cjb.net
>> >> ----------------------------------------------------------
>> >> Servidor Newsgroup da lista: news.gmane.org
>> >> Grupo: gmane.org.user-groups.programming.shell.brazil
>> >>
>> >> Links do Yahoo! Grupos
>> >>
>> >>
>> >>
>> >
>>
>>
>>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]