Pular para o conteúdo

ping Aviso

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.
Fábio Berbert de Paula fabio
Hits: 13.408 Categoria: Perl Subcategoria: Rede
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

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.
Download pingAviso.zip Enviar nova versão

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);
}

Instalação automatizada do Squid 2.5 STABLE14

Obter Nome e IP do Host

Carregando automaticamente wireless via ndiswrapper II

Simples [PortScanner]

Servidor remoto de ps aux

#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
#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

Entre na sua conta para comentar.