#! /usr/bin/perl
# anders@fupp.net, 2012-01-16
# Check number of open files in FreeBSD

use Getopt::Std;

getopts('c:w:');
$ENV{PATH} = "/sbin:/bin:/usr/sbin:/usr/bin";

$numopenfiles = `sysctl -n kern.openfiles`;
chomp($numopenfiles);

unless ($opt_w || $opt_c) {
	print "No limit set. No point.\n";
	exit(3);
}

if ($opt_c && ($numopenfiles > $opt_c)) {
	print "Number of open files $numopenfiles above limit " . $opt_c . "\n";
	exit(2);
} elsif ($opt_w && ($numopenfiles > $opt_w)) {
	print "Number of open files $numopenfiles above limit " . $opt_w . "\n";
	exit(1);
} else {
	print "Number of open files $numopenfiles within limits ($opt_w/$opt_c)\n";
	exit(0);
}
