#!/usr/bin/perl $first = 1; print "{\n"; print "\t\"data\":[\n\n"; 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+$/); } $fsname =~ s!/!\\/!g; print "\t,\n" if not $first; $first = 0; print "\t{\n"; print "\t\t\"{#FSNAME}\":\"$fsname\",\n"; print "\t\t\"{#FSTYPE}\":\"$fstype\"\n"; print "\t\t\"{#FSDEVICE}\":\"$block\"\n"; print "\t\t\"{#FSWARNTHRES}\":\"$warning\"\n"; print "\t\t\"{#FSCRITTHRES}\":\"$critical\"\n"; print "\t}\n"; } print "\n\t]\n"; print "}\n";