This may be a little more flexible for you:
#!/usr/bin/perl -w
use strict;
use warnings;
#usage: diskspace <number between 0 and 100>
my $diskuse = $ARGV[0];
my $recipient = "support\@yourdomain.com"; #who gets the report
my $dfrep = `df -k`; #get partition report
my @partitions = split(/\n/,$dfrep); # split report
my (@full, @ele, $usage, $x, $i);
my $hostname = `hostname`;
chomp($hostname);
#check syntax
unless ($diskuse > 0 || $diskuse < 100) {
print "\nUsage: spaceuse <n>\n";
print "Where n is the maximum percentage of space, in use by ";
print "any disk partition\n";
}
#check for partitions whose percent full is
#greater than or equal to the percent entered
#by the user.
foreach $i (@partitions) {
$_ = $i;
if (m/(\d{2})%/) {$usage = $1}
if ($diskuse <= $usage) { push(@full,$x) }
$x++;
}
#create and mail report
if ($#full != 0) {
open(MAIL, "|mail -s \"Diskspace Warning\" $recipient");
print MAIL "\nWarning from $hostname\n";
print MAIL "These Partitions are dangerously full:\n\n";
for (@full) {
$_++;
$_--; #converts scalar to numberic
$partitions[$_] =~ s/\s+/\t/g;
@ele = split(/\t/, $partitions[$_]);
printf MAIL "%13s %11s %11s %11s %4s %13s\n", $ele[0], $ele[1], $ele
+[2], $ele[3], $ele[4], $ele[5];
}
close(MAIL);
}
Neil Watson
watson-wilson.ca |