Página 1 de 1

[Shell Script] Monitorando sites pelo wget e notificando por email quando parar

Enviado: 20 Set 2013 21:49
por Elton
Esse Script criei em cima do wget o que faço fico dando wget no meu site quando a resposta for 200 meu site ok está quando a resposta for diferente disso o mesmo está fora do ar e assim recebo um aviso por email!!

Código: Selecionar todos

#!/bin/bash


SITE="seudominio"


wget --server-response "$SITE" 2>&1 | grep "HTTP/" | awk {'print $2'} > /var/log/teste
var1=$(sed -n 1' p;' /var/log/teste)
if [ $var1 = 200 ]; then
        echo "Site ON"
else
        echo "Site OFF"
        echo "SITE FORA DO AR " | mutt -s "SITE FORA DO AR " [email protected]
fi
exit 0;

Re:[Shell Script] Monitorando sites pelo wget e notificando por email quando parar

Enviado: 20 Set 2013 22:05
por Elton
mais um script esse segundo ta mais limpo!!! " LEMBRANDO QUE PARA ENVIAR EMAIL TEM QUE TER UM AGENTE NO LINUX USO POSTFIX!!

Código: Selecionar todos

#!/bin/bash
 
 
if [ "$(wget --spider -S "www.dominio.com.br" 2>&1 | grep "HTTP/" | awk '{print $2}')" = "200" ]; then
echo "Site ON"
else
echo "Site OFF"
echo "SITE FORA DO AR " | mutt -s "SITE FORA DO AR " [email protected]
fi
exit 0

Re:[Shell Script] Monitorando sites pelo wget e notificando por email quando parar

Enviado: 23 Set 2013 11:43
por Elton
quem quiser adicionar algo fique a vontade belo script que merece atualizações!!!  :(

Re:[Shell Script] Monitorando sites pelo wget e notificando por email quando parar

Enviado: 23 Set 2013 13:57
por Elton
versão atualiazada!!!

Código: Selecionar todos

#!/bin/bash

SITES=("www.dominio1.com.br" "www.dominio2.com.br")
EMAILRECEBIMENTO="[email protected];[email protected]"


i=0
while [ $i -lt ${#SITES[@]} ]; do
  if [ "$(wget --spider -S ${SITES[$i]} 2>&1 | grep "HTTP/" | awk '{print $2}')" = "200" ]; then
    date
    echo "Site ON"
  else
    date
    echo "Site OFF"
    echo "***** SITE FORA DO AR **** ${SITES[$i]} " | mutt -s "***** SITE FORA DO AR ******* ${SITES[$i]} *****" $EMAILRECEBIMENTO
  fi
  let i++
done
exit 0

Re:[Shell Script] Monitorando sites pelo wget e notificando por email quando parar

Enviado: 23 Set 2013 15:23
por Elton
Versão Final do script!!

Código: Selecionar todos

#!/bin/bash
SITES=("www.seudominio.com.br/" "www.seudominio.com.br/")
EMAILRECEBIMENTO="[email protected];[email protected]"
STATUSCODE=("200" "201" "202" "203" "204" "205" "206" "207")
i=0
j=0
CONTROLE=0
while [ $i -lt ${#SITES[@]} ]; do
  let CONTROLE=0
  let j=0
  while [ $j -lt ${#STATUSCODE[@]} ]; do
    if [ "$(wget --spider -S ${SITES[$i]} 2>&1 | grep "HTTP/" | awk '{print $2}')" = ${STATUSCODE[$j]} ]; then
      date
      echo "Site ON"
      let CONTROLE=1
    fi
    let j++
  done
  if [ $CONTROLE = 0 ]; then
    date
    echo "Site OFF"
    echo "***** SITE FORA DO AR **** ${SITES[$i]} " | mutt -s "***** SITE FORA DO AR ******* ${SITES[$i]} *****" $EMAILRECEBIMENTO
  fi
  let i++
done
exit 0

Re:[Shell Script] Monitorando sites pelo wget e notificando por email quando parar

Enviado: 24 Set 2013 22:39
por Elton
Atualizei um bug quando estava trazendo um valor null creio que quando acontecia alguma instabilidade na minha rede que não conseguia pegar nenhum código de resposta dava como site off criei uma confição if que quando minha resposta for == "" o site vai estar on pois meu site so pode dar como off quando ele trazer o status code 400 para cima !!!

Código: Selecionar todos

#!/bin/bash

SITES=("www.seusite.com.br" "www.seusite1.com.br")
EMAILRECEBIMENTO="[email protected];[email protected]"
STATUSCODE=("200" "201" "202" "203" "204" "205" "206" "207")

i=0
j=0
CONTROLE=0
RESPOSTASITE=0



while [ $i -lt ${#SITES[@]} ]; do
  let RESPOSTASITE="$(wget --spider -S ${SITES[$i]} 2>&1 | grep "HTTP/" | awk '{print $2}')"
  let CONTROLE=0
  let j=0
  while [ $j -lt ${#STATUSCODE[@]} ]; do
         
    if [ "$RESPOSTASITE" == "" ] || [ $RESPOSTASITE -eq ${STATUSCODE[$j]} ]; then
      date
      echo "Site ON"
      let CONTROLE=1
    fi
    let j++ 
  done 
  if [ $CONTROLE = 0 ]; then
    date
    $RESPOSTASITE  >> /var/log/pingdown2.log
    echo "Site OFF" 
    echo "***** SITE FORA DO AR **** ${SITES[$i]} " | mutt -s "***** SITE FORA DO AR ******* ${SITES[$i]} *****" $EMAILRECEBIMENTO
  fi
  let i++
done
exit 0

Re:[Shell Script] Monitorando sites pelo wget e notificando por email quando parar

Enviado: 25 Set 2013 09:01
por marceloleaes
Acho válido colocar uma linha opcional para enviar o email utilizando o sendEmail

Nem sempre temos o postfix ou outro mta configurado na máquina, e o sendEmail é mais pratico tbem  ;D

Re:[Shell Script] Monitorando sites pelo wget e notificando por email quando parar

Enviado: 25 Set 2013 10:14
por Elton
blz marcelão vou analisar isso!! ;D

Re:[Shell Script] Monitorando sites pelo wget e notificando por email quando parar

Enviado: 25 Set 2013 10:25
por Elton
inclusão da linha de envio de email pelo sendemail!

Código: Selecionar todos

#!/bin/bash

SITES=("www.seusite.com.br" "www.seusite1.com.br")
EMAILRECEBIMENTO="[email protected];[email protected]"
STATUSCODE=("200" "201" "202" "203" "204" "205" "206" "207")

i=0
j=0
CONTROLE=0
RESPOSTASITE=0



while [ $i -lt ${#SITES[@]} ]; do
  let RESPOSTASITE="$(wget --spider -S ${SITES[$i]} 2>&1 | grep "HTTP/" | awk '{print $2}')"
  let CONTROLE=0
  let j=0
  while [ $j -lt ${#STATUSCODE[@]} ]; do
         
    if [ "$RESPOSTASITE" == "" ] || [ $RESPOSTASITE -eq ${STATUSCODE[$j]} ]; then
      date
      echo "Site ON"
      let CONTROLE=1
    fi
    let j++ 
  done 
  if [ $CONTROLE = 0 ]; then
    date
    $RESPOSTASITE  >> /var/log/pingdown2.log
    echo "Site OFF" 
    echo "***** SITE FORA DO AR **** ${SITES[$i]} " | mutt -s "***** SITE FORA DO AR ******* ${SITES[$i]} *****" $EMAILRECEBIMENTO
    sendmail -t -F SeuNome -f $EMAILRECEBIMENTO 
 fi
  let i++
done
exit 0