Monitoramento de conexão

Iniciado por emanoeljulio, 13 de Junho de 2008, 21:28

tópico anterior - próximo tópico

emanoeljulio

Colegas
Sou funcionário de uma empresa que possui laboratórios de informática. O meu problema é que a empresa de internet deixa um pouco a desejar na prestação do serviço e eu tenho que ficar atento.
Estou pensando em usar um script para o monitoramento dessa conexão, a ideia é a seguine

Usar um script que realize pings
Esse script será execultado várias vezes no dia
O resultado do script deverá ser enviado para o meu email
O titulo do email deve conter o nome do local e a qntidade de perda
O conteúdo do email o teste na integra

é possível ??????
Agradeço a ajuda

emanoeljulio

Veja o que encontrei



#!/usr/bin/perl

#=========================================================================================
# Script para monitoramento de sistemas
# Desenvolvido por Alexandre Pedroso
# http://www.aplinux.com.br - aplinux@ig.com.br
#=========================================================================================

system("rm -rf /root/monitor.txt");
system("echo '============================================================' > /root/monitor.txt");
system("echo 'VERIFICAÇO DOS SISTEMAS DA EMPRESA' >> /root/monitor.txt");
system("echo '============================================================' >> /root/monitor.txt");
system("echo -n 'SERVIDOR LINUX xxx.xxx.xxx.x - ' >> /root/monitor.txt ; date >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo 'SERVIÇS ATIVOS:' >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo -n '1) ' >> /root/monitor.txt ; /etc/init.d/sendmail status >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo -n '2) ' >> /root/monitor.txt ; /etc/init.d/named status >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo -n '3) ' >> /root/monitor.txt ; /etc/init.d/radiusd status >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo -n '4) ' >> /root/monitor.txt ; /etc/init.d/httpd status >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo 'FILA DE E-MAIL:' >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo -n 'Mensagens na fila: ' >> /root/monitor.txt ; mailq | wc -l >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo 'TESTE DE PING: ' >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo '1) Roteador Link - xxx.xxx.xxx.x' >> /root/monitor.txt");
system("ping -c 5 xxx.xxx.xxx.x >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo '2) Roteador Cisco - xxx.xxx.xxx.x' >> /root/monitor.txt");
system("ping -c 5 xxx.xxx.xxx.x >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo '3) Servidor Windows 2000 - xxx.xxx.xxx.x' >> /root/monitor.txt");
system("ping -c 5 xxx.xxx.xxx.x >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo '4) Servidor Linux - xxx.xxx.xxx.x' >> /root/monitor.txt");
system("ping -c 5 xxx.xxx.xxx.x >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo '5) Servidor Externo - xxx.xxx.xxx.x' >> /root/monitor.txt");
system("ping -c 5 xxx.xxx.xxx.x >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo '6) UOL - HOST REMOTO' >> /root/monitor.txt");
system("ping -c 5 www.uol.com.br >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo 'USUÁIOS CONECTADOS:' >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo -n 'Total de usuáos conectados: ' >> /root/monitor.txt ; radwho | wc -l >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("radwho >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo 'INFORMAÇES DO HD:' >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("df -h >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo 'INFORMAÇES DE MEMÃ"IA:' >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("free >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo '20 ÚTIMAS LINHAS DO LOG DO MAIL SERVER:' >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
il -20 /var/log/maillog >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo '20 ÚTIMAS LINHAS DO LOG DO RADIUS SERVER:' >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
il -20 /var/log/radius.log >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo '20 ÚTIMAS LINHAS DO LOG DO SISTEMA:' >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
il -20 /var/log/messages >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo '============================================================' >> /root/monitor.txt");
system("echo 'TESTES REALIZADOS COM SUCESSO....' >> /root/monitor.txt");
system("echo '============================================================' >> /root/monitor.txt");
$ncon==0;
open (arq, "/root/monitor.txt");
@body= < arq >;
close (arq);
foreach $item (@body) {
$ncon=$ncon+1;
}
$ncon=$ncon-1;
if ($ncon > 5) {
open(MAIL,"|/usr/sbin/sendmail -t");
print MAIL "To: seuemail\@seudominio.com.br\n";
print MAIL "cc: seuemail\@seudominio.com.br\n";
print MAIL "From: root\@seudominio.com.br\n";
print MAIL "Subject: Monitoramento dos Sistemas\n\n";
print MAIL "-" x 75 . "\n\n";
foreach $item (@body) {
print MAIL $item;
}
print MAIL "-" x 75 . "\n\n";
close(MAIL);
}




emanoeljulio

Usando o script acima, tenho q ter instalado o sendmail em caso afirmativo tenho q configurar alguma conta smtp para o envio das msgs ??????

tfmoraes

Pior que tem que instalar o sendmail sim, mas pode ser que você encontre alguma alternativa.

emanoeljulio

Vamos lá ... encontrei um script no VOL que atendeu todas as ~minha necessidades.

precisei intslar o postfix e mailx

segue script

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

ip_remoto='74.125.47.147' # ip que servira como base de teste (ns1.intelignet.com.br)
administrador='emanoeljulio@gmail.com' # querm recebe os logs
host='Sede - Laboratorio'
connect=true
LOG=/root/configurar/logs/monitoramento

while [ 1 ]; do
data=`date +%Y%m%d`
tempo=0

  #`ping -c 3 $ip_remoto`
  #verifica=`echo $?`
 
  if ping -c 3 $ip_remoto 1>/dev/null 2>/dev/null
  then
     connect=true
     #echo 'VERIFICAÇÃO IGUAL A ZERO!!!'
  else
     #exit
     connect=false
     time_down=`date +%R`
     echo "Horário de queda --> $time_down" >> $LOG/isconnect.log_$data
  fi
  sleep 5
 
  while [ "$connect" == "false" ]; do
     let "tempo = $tempo + 1"
     #`ping -c 3 $ip_remoto`
     #$verifica=`echo $?`
     if ping -c 3 $ip_remoto 1>/dev/null 2>/dev/null
     then
        connect=true
        time_up=`date +%R`
        echo "Horário de retorno --> $time_up" >> $LOG/isconnect.log_$data
        echo "Tempo offline --> $tempo minuto(s)" >> $LOG/isconnect.log_$data
        echo '--------------------------------------------------------' >> $LOG/isconnect.log_$data
        echo '   '  >> $LOG/isconnect.log_$data
        cat $LOG/isconnect.log_$data | mail $administrador -s "Conexão reestabelecida em $host"
     else
        sleep 60
     fi
  done
done