FileSystem Alert

Publicado por Leonardo Berbert Gomes (última atualização em 29/07/2020)

[ Hits: 884 ]

Homepage: https://www.linkedin.com/in/leoberbert

Download fs_alert.pl




Script para monitoramento de diversos filesystems e envio de e-mail sem uso de autenticação.

  



Esconder código-fonte

#!/bin/perl
#
use Sys::Hostname;
use Data::Dumper;
use Time::Local;
#

($sec,$min,$hour,$day,$month,$year) = (localtime(time))[0,1,2,3,4,5]; $month +=1;$year +=1900;

if ($day =~ /^\d$/) { $day = "0" . $day;}
if ($min =~ /^\d$/) { $min = "0" . $min;}
if ($sec =~ /^\d$/) { $sec = "0" . $sec;}
if ($hour =~ /^\d$/) { $hour = "0" . $hour;}
if ($month =~ /^\d$/) { $month = "0" . $month;}

my $treshold = 85; ## Altere aqui pelo valor que irá gerar o alerta
my $fs = "/home,/var/log"; ## Inclua todos os FileSystem que deseja monitorar
my @fs = split /,/, $fs;

my @list = ();

for my $i (0 .. $#fs){
     push @list, qr/^$fs[$i]/;
}


open (COMMAND,"df -h |");
while ($line = <COMMAND>){ 
        chomp $line;
        if ($line =~ /^Filesystem/) {next};
        my @array = split /\s+/, $line;
        $used_perc = @array[4];
        $mount_point = @array[5];
        $used_perc =~s/\%//g;
        if ($mount_point ~~ @list) { 
                if ($used_perc >= $treshold) {
                        $hash{"FileSystem: $mount_point \t| used: $used_perc%"}++;
                }
        }
}

my $mail_file = "mail" .  "_" . $year . $month . $day . $hour . $min . $sec . ".tmp";
open(OUT,">$mail_file") or die "Can't open : $!";

foreach $I ( sort keys %hash) { 
        print OUT "$I\n";
} 
close(OUT);

if ( -z $mail_file ) {
        unlink $mail_file;
} else {
        my $emails="leoberbert\@uol.com.br,leoberbert\@gmail.com.br"; ## Inclua todos os email que irão receber o alerta
        my $hostname = hostname();
        my $server = "meuserver_smtp_sem_autenticacao.com.br:25"; ## Altere pelo seu servidor SMTP
        my $message = "Filesystem $mount_point acima do Treshold. ";
        system("cat $mail_file | mailx -S smtp=$server -s \"Alerta: Espaço em disco do servidor $hostname está no limite\" -v $emails");
        unlink $mail_file;
} 

Scripts recomendados

Calculadora com Perl com menos de 10 linhas de código

Monitor Process

Verificação se utilizador existe ou não

Wallpapers aleatórios no Fluxbox

Índice (Logaritmo Discreto) em Perl


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts