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

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

Re: [shell-script] Teste de conexão


From: Gustavo Pardellas Feijó
Subject: Re: [shell-script] Teste de conexão
Date: Mon, 07 Aug 2006 18:46:50 -0300
User-agent: Thunderbird 1.5.0.4 (X11/20060713)

A sugestão do logger foi anotada. Segue o isconnect.sh


#!/bin/bash
#isconnect.sh
# script para monitoracao da conexao com a internet
# desenvolvido por Gustavo Feijo (address@hidden)

ip_remoto=216.239.51.104 # ip que servira como base de teste (www.google.com)
administrador='address@hidden'    # quem recebe os logs
host=`hostname`
connect=true
LOG=/var/log
NAME=isconnect
DAEMON=/home/admin/scripts/isconnect.sh
PIDFILE=/var/run/$NAME.pid
DHCP=true

while [ 1 ]; do
data=`date +%Y%m%d`
tempo=0
limite=5 # limite de tempo offline (em minutos)

  if ping -c 3 $ip_remoto 1>/dev/null 2>/dev/null
  then
     connect=true
  else
     connect=false
     time_down=`date +%r`
echo -e "---- date ----\nHor\xe1rio de queda --> $time_down" >> $LOG/isconnect.log_$data
  fi

  while [ "$connect" == "false" ]; do
     if ping -c 3 $ip_remoto 1>/dev/null 2>/dev/null
     then
        connect=true
        time_up=`date +%r`
echo "Hor\xe1rio de retorno --> $time_up" >> $LOG/isconnect.log_$data echo "Tempo offline --> aproximadamente: $tempo minuto(s)" >> $LOG/isconnect.log_$data
        echo -e '----\n' >> $LOG/isconnect.log_$data
        if [ $tempo -gt $limite ]
        then
/usr/bin/tail -n 6 $LOG/isconnect.log_$data | mail "$administrador" -s "[ $host ] $tempo minutos offline"
        fi
     else
        if [ $DHCP == "true" ]
        then
         /sbin/dhclient
        fi
        let "tempo = $tempo + 1"
        sleep 60
     fi
  done
  sleep 5
done


;-)
chmod000
"Microsoft butterfly is their way of telling you
their system has a lot of !@#$ bugs..."


Reinaldo Carvalho escreveu:
Você poder usar o comando "logger" para gravar as informações via
syslog, e se tiver o postfix instalado, use o comando postlog (esse é
mais legal)

Ex: postlog -t isconnect[$$] '[ ERR ]: Something bad happens'

Acho que faltou você enviar o conteudo do: /sbin/isconnect.sh

Acho que esse tratamento do "$?" pode ficar dentro do
/sbin/isconnect.sh, eh que ele mesmo grave no log. E talvez essa
abordagem do start-stop-daemon não fosse a melhor para este caso.


On 8/7/06, Gustavo Pardellas Feijó <address@hidden> wrote:
 > Pessoal, desenvolvi um script que testa a conexão e, caso ela caia,
 > começa a escrever um log com o horário de queda. Tão logo quanto a
 > conexão se restabeleça grava no log o horário de retorno e o tempo
 > aproximado em que ficou offline, em seguida envia um e-mail para o
 > administrador para que ele tome ciência da perda de conexão.
 >
 > Estou bem satisfeito com o script, mas é claro que os colegas com mais
 > experiência podem contribuir com uma dica, linha ou comando diferente.
 >
 > Segue em anexo as duas partes do script.
 >
 > []'s
 > --
 >
 > ;-)
 > chmod000
 > "Microsoft butterfly is their way of telling you
 > their system has a lot of !@#$ bugs..."
 >
 >   ----------
 >
 > #!/bin/bash
 > NAME=isconnect
 > DAEMON=/sbin/isconnect.sh
 > DESC="Is your server connect?"
 > PIDFILE=/var/run/$NAME.pid
 > PID=`ps xua | awk '/${DAEMON}/ { print $2 }' | grep -v awk`
 >
 > case "$1" in
 >   start)
 >      echo -n "Starting: $NAME  "
> start-stop-daemon --start --quiet --background --make-pidfile --pidfile "$PIDFILE" --exec $DAEMON
 >      if [ $? == 0 ]
 >      then
 >        echo "[ OK ]"
 >      else
 >        echo "[ ERR ]: Something bad happens"
 >      fi
 >      ;;
 >   stop)
 >      echo -n "Stopping: $NAME  "
 >      start-stop-daemon --stop --quiet --pidfile /var/run/${NAME}.pid
 >      if [ $? == 0 ]
 >      then
 >        echo "[ OK ]"
 >        rm -f $PIDFILE
 >      else
 >        echo -e "[ ERR ]: Something bad happens.\n\t Trying kill -9."
 >        kill -9 `cat $PIDFILE`
 >          if [ $? ==0 ]
 >          then
 >            echo "[ OK ]"
 >            rm -f $PIDFILE
 >          else
> echo "[ ERROR ]: Something realy bad is happen.\n This is your process id [ `cat $PIDFILE` ].\n You're by your own."
 >            exit
 >          fi
 >      fi
 >      ;;
 >   restart)
 >      $0 stop
 >      $0 start
 >      ;;
 >   *)
 >      echo "Usage: $0 [start || stop || restart]"
 >      exit
 >      ;;
 > esac
 >
 >
 > [As partes desta mensagem que não continham texto foram removidas]
 >
 >
 >
 > ---------------------------------------------------------------------
> 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
 > ---------------------------------------------------------------------
> 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
 >
 >
 >
 >
 >
 >
 >
 >
 >


--
Reinaldo Carvalho
Debian Sarge 3.1 - Linux User: #238310
Prodepa - address@hidden



reply via email to

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