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 ?
или я плохо читал его описанине ?
>Hi ALL.
>такая проблема : написал скриптик который должен следить за свободным местом на
>партишенах и
>если что , отсылать mail.Забудь о подобных костылях для FreeBSD. Всё уже давно продумали за нас:
/home/chip> uname -s
FreeBSD
/home/chip> grep df /etc/defaults/periodic.conf
daily_status_disks_df_flags="-k -t nonfs" # df(1) flags for check
/home/chip>Всё что от тебя требуется изменить alias: /etc/mail/aliases:
> grep ^root /etc/mail/aliases
root: user@domain.tld
>на свой e-mail и перестроить базу aliases.db командой newaliases.