|
|
@@ -22,7 +22,7 @@ require 5.004;
|
|
|
use POSIX;
|
|
|
use strict;
|
|
|
use Getopt::Long;
|
|
|
-use vars qw($opt_P $opt_V $opt_h $opt_H $opt_k $opt_s $opt_W $opt_u $opt_p $opt_w $opt_c $opt_a $verbose);
|
|
|
+use vars qw($opt_P $opt_V $opt_h $opt_H $opt_k $opt_s $opt_W $opt_u $opt_p $opt_w $opt_c $opt_a $opt_C $verbose);
|
|
|
use vars qw($PROGNAME);
|
|
|
use FindBin;
|
|
|
use lib "$FindBin::Bin";
|
|
|
@@ -52,7 +52,8 @@ GetOptions
|
|
|
"s=s" => \$opt_s, "share=s" => \$opt_s,
|
|
|
"W=s" => \$opt_W, "workgroup=s" => \$opt_W,
|
|
|
"H=s" => \$opt_H, "hostname=s" => \$opt_H,
|
|
|
- "a=s" => \$opt_a, "address=s" => \$opt_a);
|
|
|
+ "a=s" => \$opt_a, "address=s" => \$opt_a,
|
|
|
+ "C=s" => \$opt_C, "configfile=s" => \$opt_C);
|
|
|
|
|
|
if ($opt_V) {
|
|
|
print_revision($PROGNAME,'@NP_VERSION@'); #'
|
|
|
@@ -90,6 +91,10 @@ my $warn = $1 if ($opt_w =~ /^([0-9]{1,2}\%?|100\%?|[0-9]+[kMG])$/);
|
|
|
my $crit = $1 if ($opt_c =~ /^([0-9]{1,2}\%?|100\%?|[0-9]+[kMG])$/);
|
|
|
($crit) || usage("Invalid critical threshold: $opt_c\n");
|
|
|
|
|
|
+($opt_C) || ($opt_C = shift @ARGV) || ($opt_C = "");
|
|
|
+my $configfile = $opt_C if ($opt_C);
|
|
|
+usage("Unable to read config file $configfile\n") if ($configfile) && (! -r $configfile);
|
|
|
+
|
|
|
# Execute the given command line and return anything it writes to STDOUT and/or
|
|
|
# STDERR. (This might be useful for other plugins, too, so it should possibly
|
|
|
# be moved to utils.pm.)
|
|
|
@@ -191,6 +196,7 @@ my @cmd = (
|
|
|
defined($address) ? ("-I", $address) : (),
|
|
|
defined($opt_P) ? ("-p", $opt_P) : (),
|
|
|
defined($opt_k) ? ("-k") : (),
|
|
|
+ defined($configfile) ? ("-s, $configfile") : (),
|
|
|
"-c", "du"
|
|
|
);
|
|
|
|
|
|
@@ -289,8 +295,9 @@ print "$state\n" if ($verbose);
|
|
|
exit $ERRORS{$state};
|
|
|
|
|
|
sub print_usage () {
|
|
|
- print "Usage: $PROGNAME -H <host> -s <share> -u <user> -p <password>
|
|
|
- -w <warn> -c <crit> [-W <workgroup>] [-P <port>] [-a <IP>]\n";
|
|
|
+ print "Usage: $PROGNAME -H <host> -s <share> -u <user>
|
|
|
+ -p <password> -w <warn> -c <crit> [-W <workgroup>] [-P <port>]
|
|
|
+ [-a <IP>] [-C <configfile>]\n";
|
|
|
}
|
|
|
|
|
|
sub print_help () {
|
|
|
@@ -316,12 +323,13 @@ Perl Check SMB Disk plugin for Nagios
|
|
|
Password to log in to server. (Defaults to an empty password)
|
|
|
-w, --warning=INTEGER or INTEGER[kMG]
|
|
|
Percent of used space at which a warning will be generated (Default: 85%)
|
|
|
-
|
|
|
-c, --critical=INTEGER or INTEGER[kMG]
|
|
|
Percent of used space at which a critical will be generated (Defaults: 95%)
|
|
|
-P, --port=INTEGER
|
|
|
Port to be used to connect to. Some Windows boxes use 139, others 445 (Defaults to smbclient default)
|
|
|
-
|
|
|
+-C, --configfile=STRING
|
|
|
+ Path to configfile which should be used by smbclient (Defaults to smb.conf of your smb installation)
|
|
|
+
|
|
|
If thresholds are followed by either a k, M, or G then check to see if that
|
|
|
much disk space is available (kilobytes, Megabytes, Gigabytes)
|
|
|
|