Hi ALL.
такая проблема : написал скриптик который должен следить за свободным местом на партишенах и
если что , отсылать mail.
#!/usr/bin/perl
use POSIX "uname";
use strict;
use Filesys::DiskFree;
use Mail::Sendmail;
my ($sysname, $nodename, $release, $version, $machine ) = uname;
my $quota = 90;
my $hdd = "hd"; #may be sd (scsi) or hd (ide)
my $From = "$nodename\@xxx.com";
my $handle = new Filesys::DiskFree;
$handle->df();
open (FILE,"/etc/mtab") or die "error $!\n";
my @mas =<FILE>;
close (FILE);
my %hash_a = ();
foreach my $str (@mas) {
my @list = split (/ /,$str);
next if $list[0] !~ /^\/dev\/$hdd*/ ;
$hash_a {$list[1]}=$list[0];
}
foreach my $str (keys(%hash_a)) {
my $res = (($handle->used($str)/$handle->total($str))*100) ;
next if $res < $quota ;
mail($str,$res,$hash_a{$str});
}
sub mail {
my ($str,$res,$dev) =@_;
my %mail = ( smtp => 'mail.xxx.com',
Subject => 'DISK SPACE ALARM',
To => 'root@xxx.com',
From => "$From",
Message => "ALARM !!! $dev $str $res% used on $nodename $sysname"
);
sendmail(%mail) or die $Mail::Sendmail::error;
}
под linux работает наура , теперь мне понадобилось перенести этот скрипт на FreeBSD , установил необходимые перл модули , но p5-Filesys-DiskFree-0.06 отказываются работать
в версии под FreeBSD разумеется надо изменить названия партишенов с /dev/hd на /dev/adxxx
и переделать часть с /etc/mtab
но до этого дело не доходит , вот в чем трабла:
запускаю и вот что говорит модуль
./diskalarm.pl
No df command known for format freebsd at ./diskalarm.pl line 14
ему не нравится , что переменая $^O содержит freebsd
если модуль передлать так , чтоб вместь $^O подставлялась bsdos которая определена в модуле
то неработают части модуля .
спрашивается для чего в портах есть этот модуль если он не поддерживает FreeBSD ?
или я плохо читал его описанине ?