URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 4895
[ Назад ]

Исходное сообщение
"troubles with perl module"

Отправлено anonymous , 01-Дек-05 17:03 
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 ?
или я плохо читал его описанине ?


Содержание

Сообщения в этом обсуждении
"troubles with perl module"
Отправлено chip , 05-Дек-05 13:47 
>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.