diff --git a/nagios-nrpe/files/plugins/check_ftp_login.pl b/nagios-nrpe/files/plugins/check_ftp_login.pl new file mode 100644 index 00000000..b7045416 --- /dev/null +++ b/nagios-nrpe/files/plugins/check_ftp_login.pl @@ -0,0 +1,90 @@ +#!/usr/bin/perl + +use Net::FTP; +use strict; +use warnings; +use Getopt::Long; +use FindBin; +use lib "$FindBin::Bin/../perl/lib"; +use Monitoring::Plugin; +use File::Basename; + +# Vars +my ($code,$message); +my ($SERVER,$USER,$PASSWORD,$FILE,$PATH); +my ($ftp); + +my $exit_code = 0; +my (@line, @msg); + +my $t_out = 15; +my $VERSION = 1; +my $PROGNAME = basename($0); + +# Teststring ./test.pl -H ksl-vw2k530.gsdnet.ch -u ew.luks054.ksl -p ERcd45.e + +my $p = Monitoring::Plugin->new( + usage => "Usage: %s -H -u -p ", + version => $VERSION, + blurb => "Checks FTP Server with login/password", + extra => " + Options: + -H + Host name or IP Address + -u + FTP Username + -p + FTP Password + -t + Timeout (Default: $t_out seconds) + ", + ); + +$p->add_arg( + spec => 'H|hostname=s', + help => + qq{-H, --hostname=STRING + Hostname}, +); + +$p->add_arg( + spec => 'u|ftpuser=s', + help => + qq{-u, --ftpuser=STRING + FTP User}, +); + +$p->add_arg( + spec => 'p|ftppassword=s', + help => + qq{-p, --ftppassword=STRING + FTP Password}, +); + +$p->add_arg( + spec => 't|timeout=i', + help => + qq{-t, --timeout=STRING + Timeout}, +); + +# Parse arguments and process standard ones (e.g. usage, help, version) +$p->getopts; + +# perform sanity checking on command line options +if (defined $p->opts->t) { + $t_out = $p->opts->timeout; +} + +# Main +$ftp = Net::FTP->new($p->opts->H, Debug => 0, Timeout => $t_out) + or die "Cannot connect to $SERVER: $@"; + +$ftp->login($p->opts->u,$p->opts->p) + or die "Cannot login ", $ftp->message; + +$ftp->quit; + +# Output +($code, $message) = $p->check_messages(); +$p->plugin_exit( $code, $message );