#! /usr/bin/perl use strict ; use warnings ; package Probe::Df ; use base 'Probe' ; sub ITEMS { [ { name => 'root_size' , kind => 'gbs' , args => [ qw(size /) ] } , { name => 'root_usage' , kind => 'perc' , args => [ qw(usage /) ] } , { name => 'fs_boot_size' , kind => 'gbs' , args => [ qw(size /boot) ] } , { name => 'fs_boot_usage' , kind => 'perc' , args => [ qw(usage /boot) ] } , { name => 'fs_data_size' , kind => 'gbs' , args => [ qw(size /data) ] } , { name => 'fs_data_usage' , kind => 'perc' , args => [ qw(usage /data) ] } , { name => 'fs_home1_size' , kind => 'gbs' , args => [ qw(size /home) ] } , { name => 'fs_home1_usage' , kind => 'perc' , args => [ qw(usage /home) ] } , { name => 'fs_proj1_size' , kind => 'gbs' , args => [ qw(size /projects) ] } , { name => 'fs_proj1_usage' , kind => 'perc' , args => [ qw(usage /projects) ] } , { name => 'fs_proj2_size' , kind => 'gbs' , args => [ qw(size /projects2) ] } , { name => 'fs_proj2_usage' , kind => 'perc' , args => [ qw(usage /projects2) ] } ] } ; sub main { my $self = shift ; my $itms = shift ; # items to probe : [ item, ... ] my $clnt = shift ; # main::CLIENT my $path = $self -> path ; my @prog = ( "$path/df.pl", qw(-t 1) ) ; my %data = () ; my ( $err, $xit, $sig, @lines ) = Probe::Util::run_prog ( @prog ) ; if ( $err ) { $_ -> perr ( $err ) for @$itms ; } else { for my $line ( @lines ) { chomp $line ; my ( $mnt, $clas, $val ) = split ' ', $line ; $data { $mnt } { $clas } = $val ; } for my $item ( sort { $a -> name cmp $b -> name } @$itms ) { my ( $clas, $mnt ) = @{ $item -> args } ; $item -> set_val ( $data { $mnt } { $clas } ) ; } } } 1 ;