ping Aviso

Publicado por Fábio Berbert de Paula 13/11/2002

[ Hits: 13.045 ]

Homepage: https://fabio.automatizando.dev

Download pingAviso.zip




Script que fica enviando pacotes através do comando ping para
uma determinada máquina e avisa o administrador de sistemas
por email quando a máquina deixa de responder. Bom para detectar
quedas de rede.

  



Esconder código-fonte

#!/usr/bin/perl
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# pingAviso.pl
# 
# Script que fica enviando pacotes através do comando ping para
# uma determinada máquina e avisa o administrador de sistemas 
# por email quando a máquina deixa de responder. Bom para detectar
# quedas de rede.
#
# Programado por Fábio Berbert de Paula <fabio@vivaolinux.com.br>
# Na web em: www.vivaolinux.com.br
#
# Rio de Janeiro, 25 de Julho de 2002
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

use strict;

use MIME::Entity; # módulo para envio de email


# definir variáveis globais --
my $ip   = '200.215.128.83'; # endereço IP do host target
my $ping = '/bin/ping';
my $time = 60; # executar verificação a cada 60 segundos
my $tout = 3600; # aguardar 5 minutos após a queda da máquina, só para
                 # dar tempo de a mesma voltar em caso de reinicialização :)

# mude aqui o seus endereços de email
my $sysfrom = 'Fábio Berbert de Paula <fabio@vivaolinux.com.br>';
my $systo   = 'suporte@vivaolinux.com.br';
my ($out,$corpo);

# looping principal
while (1) {
   $out = `$ping -c 3 $ip`; # execute o ping
   if ( $out !~ /bytes from/i ) {
      # se não recebemos uma saída positiva (bytes from), vamos avisar
      # o sysadmin
      print "$ip fora do ar, avisando por email...\n";
      avisar();
   }
   sleep(1);
}

sub avisar {
   # capturar a data e hora de agora
   my ($dia,$mes,$ano,$hora,$min) = (localtime(time))[3,4,5,2,1];
   $ano += 1900; $mes++;
   $mes = sprintf("%02d",$mes);
   $dia = sprintf("%02d",$dia);
   $hora = sprintf("%02d",$hora);
   $min = sprintf("%02d",$min);

   # definir corpo da mensagem
   $corpo .= '
Atenção,

A máquina ('. $ip . ') não está respondendo ao ping, tudo indica que a mesma está fora da rede. Favor efetuar uma verificação manual, este é um teste automático.


';
$corpo .= "\nRio de Janeiro, $dia do $mes de $ano - $hora:$min hs";
  # enviar email com o corpo atual
  my $top = build MIME::Entity  From    => $sysfrom,
                                To      => $systo,,
                                Subject => "$ip fora da rede",
                                Data    => $corpo;

  open(MAIL,"| /usr/lib/sendmail -t");
  $top->print(\*MAIL);
  close(MAIL);

  sleep($tout);
}

Scripts recomendados

Carregando automaticamente wireless via ndiswrapper

Obter Nome e IP do Host

UDP flood em Perl!

Enviando notificações do Nagios para o MSN

Forensic Net Tools


  

Comentários
[1] Comentário enviado por paulocelsojr em 19/12/2005 - 15:45h

Quando eu rodo esse script da a seguinte mensagem de erro:
Can't locate MIME/Entity.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.7 /usr/local/share/perl/5.8.7 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at ./teste.sh line 18.
BEGIN failed--compilation aborted at ./teste.sh line 18.
poderia me ajudar a solucionar esse problema?

[2] Comentário enviado por paulopmt1 em 22/04/2007 - 23:56h

Amigo, gostei da idéia do script. Porém comigo deu o mesmo erro que o do paulocelsojr.:
Can't locate MIME/Entity.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at ./ping_aviso line 4.
BEGIN failed--compilation aborted at ./ping_aviso line 4.

Sabe me dizer qual é o problema?
qualquer ajuda agradeço muito

[3] Comentário enviado por andrei_scaratti em 18/05/2007 - 13:23h

muito legal amigo

[4] Comentário enviado por dcampos em 16/06/2007 - 16:36h

O problema, paulopmt1 e paulocelsojr, é que o módulo MIME::Entity não estava instalado no computador de vocês. Podem baixá-lo de http://search.cpan.org/~dskoll/MIME-tools-5.420/lib/MIME/Entity.pm.

Abraço.

[5] Comentário enviado por rafael.mendes em 20/03/2008 - 09:22h

ou (debian) aptitude install entity

[6] Comentário enviado por dvinciguerra em 04/03/2010 - 14:21h

Podem baixar executando o comando...

cpan -i MIME::Entity

Ua,


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts