#!/usr/bin/perl -Tw use constant EMAIL => 'robau@cpan.org'; use constant SERVER => 'localhost'; use constant ALERT => 90; use constant FILESYS => ( '/', '/usr', '/var', '/home' ); use Carp; use Filesys::Df (); use Mail::Mailer; use Template; use strict; my @alert = (); foreach my $fs ( FILESYS ) { my $ref = Filesys::Df::df( $fs ); push @alert, { 'mountpoint' => $fs, 'percent' => $ref->{'per'}, 'blocks_free' => $ref->{'bfree'}, 'blocks_used' => $ref->{'used'}, 'blocks_total' => $ref->{'blocks'} } if $ref->{'per'} > ALERT; } if (scalar @alert) { my $output; my $mail = Mail::Mailer->new( 'smtp', Server => SERVER ); $mail->open({ 'To' => EMAIL, 'From' => EMAIL }); my $template = Template->new({ 'ABSOLUTE' => 1 }); $template->process( '/isp/var/mail/dfmon-alert.tt2', { 'filesystems' => \@alert }, \$output ) || croak( 'Error in processing mail template - ', $template->error ); print $mail $output; $mail->close; } exit 0;