[Nagiosplug-help] Plugin help and needed!
Jasmine
jasmine.chua at securecirt.com
Wed Apr 16 09:35:12 CEST 2003
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi gurus,
does anyone know of a plugin that can check a port. If it is open I want it to
return Ok status intead of critical? Because i have a script but its not
working & On nagios web interface, it keeps reporting "no output!" error. I
tested the script is working by itself , but somethings screwed when i tried
to execute it as user 'nagios'.
`su - nagios ./check_remote_port -H x.x.x.x -P 23`
Here's the permissions:
-rwxr-xr-x 1 nagios nagios 3247 Mar 27 18:41 check_remote_port
Here's the script in Perl.
#!/usr/bin/perl
# Usage:
# check_remote_port_closed -H <host>
use IO::Socket;
use Getopt::Long;
Getopt::Long::Configure('bundling');
$version=0.01;
my %ERRORS = ('UNKNOWN' , '-1',
'OK' , '0',
'WARNING', '1',
'CRITICAL', '2');
#
# some default values
#
#
# get command line options the regular way
#
GetOptions
("V" => \$opt_V, "version" => \$opt_V,
"H=s" => \$opt_H, "hostname=s" => \$opt_H,
"P=s" => \$opt_P, "port=s" => \$opt_P,
"T=s" => \$opt_T, "timeout=s" => \$opt_T);
#
# handle the verbose stuff first
#
if ($opt_V) {
print "\n";
print "check_remote_port_closed plugin version $version\n";
print "\n";
print "\n";
exit $ERRORS{'UNKNOWN'};
}
# now get options the weired way and set the defaults
# if nothing else is provided
#
$opt_H = shift unless ($opt_H);
$opt_P = shift unless ($opt_P);
$opt_T = shift unless ($opt_T);
print "No Host specified. (-H <hostname/ip>)\n" unless ($opt_H);
exit $ERRORS{'UNKNOWN'} unless ($opt_H);
print "No Port specified (-P <port>) \n" unless ($opt_P);
exit $ERRORS{'UNKNOWN'} unless ($opt_P);
$TIMEOUT= $opt_T || 15;
$SIG{'ALRM'} = sub {
print ("OK: Cannot connect to port (alarm)\n");
exit $ERRORS{"OK"};
};
alarm($TIMEOUT);
#
# now we set things up for the real work
# and fire up the request
#
# Build the socket connection.
$socket = IO::Socket::INET->new(PeerAddr => $opt_H,
PeerPort => $opt_P,
Proto => "tcp",
Type => SOCK_STREAM) or
&error_can_connect;
close ($socket);
print "CRITICAL: Can connect to port!\n";
exit $ERRORS{'CRITICAL'};
sub error_can_connect {
print "OK: Cannot connect to port\n";
exit $ERRORS{'OK'};
}
Here's my service definition
define service{
host_name host abc
service_description Telnet
check_command check_remote_port!23!10
active_checks_enabled 1
passive_checks_enabled 0
parallelize_check 1
obsess_over_service 1
check_freshness 0
max_check_attempts 3
normal_check_interval 1
retry_check_interval 1
check_period 24x7
notification_interval 10
notification_period 24x7
notification_options n
contact_groups admin
}
Here's my command definition:
# 'check_remote_port' command definition
define command{
command_name check_remote_port
command_line $USER1$/check_remote_port -H $HOSTADDRESS$ -P $ARG1$ \
- -T $ARG2$
}
And, $USER1$ Macro points to the right directory where the plugin is.
Thanks
Jasmine Chua
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)
iD8DBQE+nYWlNgvTa7Hj2AURAgr8AJsEu7U/XllfCokjugDAQkE+oBoTxgCfdq1q
h2XpirReC+Ac5/86izEnaq8=
=amQO
-----END PGP SIGNATURE-----
More information about the Help
mailing list