zabbix-agent-addons/zabbix_scripts/disco_filesystems

50 lines
1.0 KiB
Perl

#!/usr/bin/perl
use JSON;
my $json;
@{$json->{data}} = ();
my $cmd;
my $re;
# On Linux, parse /proc/mounts
if (-e "/proc/mounts"){
$cmd = 'cat /proc/mounts';
$re = qr/(\S+) (\S+) (\S+)/;
}
# On BSD (at least pfsense), there's no /proc/mounts
# parse the mount output
else{
$cmd = '/sbin/mount';
$re = qr/(\S+) on (\S+) \((\S+), /;
}
for (`$cmd`){
($block, $fsname, $fstype) = m/$re/;
# Default warning and critical level (%)
my $warning = 85;
my $critical = 95;
my $t;
if (open WARN, "$fsname/.zbx_warning"){
$t = join "", <WARN>;
close WARN;
chomp($t);
$warning = $t if ($t =~ m/^\d+$/);
}
if (open CRIT, "$fsname/.zbx_critical"){
$t = join "", <CRIT>;
close CRIT;
chomp($t);
$critical = $t if ($t =~ m/^\d+$/);
}
push @{$json->{data}}, {
"{#FSNAME}" => $fsname,
"{#FSTYPE}" => $fstype,
"{#FSDEVICE}" => $block,
"{#FSWARNTHRES}" => $warning,
"{#FSCRITTHRES}" => $critical
};
}
print to_json($json);
exit(0);