Здравствуйте, Artur.
Вы писали 3 ноября 2006 г., 10:01:11:
> Иван Осовец пишет:
>> Здравствуйте, Artur.
>>
>> Вы писали 3 ноября 2006 г., 6:00:04:
>>
>>
>>> Всем привет
>>>
>>
>>
>>> появилась идея написать скрипт который бы мониторил доступность
>>> физического пространства на дисках и в случае занятости раздела скажем
>>> на 97% кидал бы почту. Так вот может кто уже писал нечто подобное и
>>> поделится ???
>>>
>>
>>
>>
>> есть скриптец на перле DiskCheck
>>
>>
>>
> поделитесь
diskcheck.pl:
#!/usr/bin/perl
require '/etc/diskcheck.conf' || die "Config File Not Found";
$hostname = `hostname`;
chomp($hostname);
list=`df $ignore`;
($null, $blocksize, $null, $null, $null, $null, $null) = split (/\s+/, shift(@list));
$blocksize =~ s/-blocks$//;
open(MFILE, ">$tempfile.$$");
print MFILE "To: $mailto\n";
print MFILE "From: $mailfrom\n";
print MFILE "Subject: WARNING: Disk usage high on $hostname!!!\n";
print MFILE "\n";
$high = 0;
print MFILE "Disk usage for $hostname:\n\n";
for (@list) {
($volume, $total, $used, $available, $pct, $mountPoint) = split (/\s+/);
chop($pct);
chomp($mountPoint);
if ( $exclude !~ m=$volume= ) {
if ($Cutoff{$volume} ) {
if ($pct >= $Cutoff{$volume}) {
$high = 1;
print MFILE "$volume ($mountPoint) is $pct% full -- $used of $total
$blocksize-blocks used, $available remain\n";
}
}
elsif ($Cutoff{$mountPoint} ) {
if ($pct >= $Cutoff{$mountPoint}) {
$high = 1;
print MFILE "$volume ($mountPoint) is $pct% full -- $used of $total
$blocksize-blocks used, $available remain\n";
}
}
elsif ($pct >= $DefaultCutoff) {
$high = 1;
print MFILE "$volume ($mountPoint) is $pct% full -- $used of $total $blocksize-blocks
used, $available remain\n";
}
}
}
close (MFILE);
if ($high != 0) {
#mail the message
open(MAIL,"|$mailprog -t");
open(MFILE, "$tempfile.$$") || die "Can't open $tempfile.$$!";
while(<MFILE>) {
print MAIL $_;
}
close (MFILE);
}
unlink ("$tempfile.$$");
exit(0);
#######################################################################################
и файлик настройки
diskcheck.conf:
# anything 90% or fuller will be reported...
$DefaultCutoff = 90;
# List cutoffs for special drives to override the above
# You can list mount points or partitions
#$Cutoff{'/dev/hda3'} = 50;
#$Cutoff{'/home'} = 50;
# List one or more partitions to ignore...
#$exclude = "/dev/hda1 /dev/hda2";
# List one or more filesystem types to ignore...
# do -x <filesystem-type>
$ignore = "-x nfs -x iso9660";
# Who to mail to...
$mailto = "root";
# Who to mail from...
$mailfrom = "Disk Usage Warning System <root>";
# Location of sendmail
$mailprog = '/usr/sbin/sendmail';
# Location and name for a temp file
$tempfile = '/tmp/diskusagealert.txt';
у меня перловый скрипт в cron.hourly