#!/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 "", ; close WARN; chomp($t); $warning = $t if ($t =~ m/^\d+$/); } if (open CRIT, "$fsname/.zbx_critical"){ $t = join "", ; 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);