Are you sure you are trying to test plugin execution with the nagios user? Try that. <br><br><div class="gmail_quote">On Tue, Aug 17, 2010 at 5:57 PM,  <span dir="ltr"><<a href="mailto:diego.roccia@gmail.com">diego.roccia@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Hi Melissa,<br>
  if you disable the embedded perl interpreter in nagios.cfg, does the script start to work?<br>
Diego<br>
Sent from my BlackBerry® wireless device<br>
<div class="im"><br>
-----Original Message-----<br>
From: "Matthew J. Salerno" <<a href="mailto:vagabond_king@yahoo.com">vagabond_king@yahoo.com</a>><br>
Date: Tue, 17 Aug 2010 12:45:29<br>
To: Huber, Melissa<<a href="mailto:mhuber@ascentdata.com">mhuber@ascentdata.com</a>>; Nagios Users List<<a href="mailto:nagios-users@lists.sourceforge.net">nagios-users@lists.sourceforge.net</a>><br>
Reply-To: "Matthew J. Salerno" <<a href="mailto:Vagabond_king@yahoo.com">Vagabond_king@yahoo.com</a>>,<br>
        Nagios Users List <<a href="mailto:nagios-users@lists.sourceforge.net">nagios-users@lists.sourceforge.net</a>><br>
</div><div><div></div><div class="h5">Subject: Re: [Nagios-users] nagios plugins return code issue<br>
<br>
What is your command line?  Are you calling the script directly or is it wrapped<br>
in a shell script?  I took a quick look at the script, and it needs quite a bit<br>
of improvement.  Not sure if it was a result of my copy and paste, but there is<br>
only so much I can blame on bad formatting.  I would recommend looking for a<br>
different script that does the same thing.<br>
<br>
<br>
<br>
<br>
----- Original Message ----<br>
From: "Huber, Melissa" <<a href="mailto:mhuber@ascentdata.com">mhuber@ascentdata.com</a>><br>
To: Matthew J. Salerno <<a href="mailto:Vagabond_king@yahoo.com">Vagabond_king@yahoo.com</a>>; Nagios Users List<br>
<<a href="mailto:nagios-users@lists.sourceforge.net">nagios-users@lists.sourceforge.net</a>><br>
Sent: Tue, August 17, 2010 3:20:42 PM<br>
Subject: RE: [Nagios-users] nagios plugins return code issue<br>
<br>
Umm... Not sure.  I just tried uncommenting and got the same results though.<br>
I'm taking over managing the nagios server that we have from another collegue<br>
who left the company.  I've actually migrated everything over to another server<br>
that is now running the latest nagios.  The previous server was 3.0.6 I<br>
believe.  I tried searching for an updated version of these plugins, but<br>
couldn't find any.  I'm not that great with perl scripting either.  :/<br>
<br>
Missy<br>
<br>
-----Original Message-----<br>
From: Matthew J. Salerno [mailto:<a href="mailto:vagabond_king@yahoo.com">vagabond_king@yahoo.com</a>]<br>
Sent: Tuesday, August 17, 2010 2:58 PM<br>
To: Nagios Users List<br>
Cc: Huber, Melissa<br>
Subject: Re: [Nagios-users] nagios plugins return code issue<br>
<br>
For starters, why is use strict commented out?<br>
<br>
<br>
________________________________<br>
<br>
From: "Huber, Melissa" <<a href="mailto:mhuber@ascentdata.com">mhuber@ascentdata.com</a>><br>
To: <a href="mailto:nagios-users@lists.sourceforge.net">nagios-users@lists.sourceforge.net</a><br>
Sent: Tue, August 17, 2010 2:41:23 PM<br>
Subject: [Nagios-users] nagios plugins return code issue<br>
<br>
<br>
Hello all,<br>
<br>
I've googled around everywhere trying to find an answer here and came up<br>
unsuccessful, so if anyone has had experience in this situation, I'd appreciate<br>
help!<br>
<br>
<br>
Basically, the issue that I'm having is that I have a couple of temperature<br>
plugins that are reporting errors in Nagios and at the command line they're<br>
exiting in 0:<br>
<br>
<a href="http://check7204temp.pl" target="_blank">check7204temp.pl</a>  - Return code of 255 is out of bounds and <a href="http://checkciscotemp.pl" target="_blank">checkciscotemp.pl</a> -<br>
Return code of 9 is out of bounds<br>
<br>
If I run a "echo $?" at the command line after running the command successfully,<br>
I get 0.<br>
<br>
Thanks for any help anyone can provide!!  My perms are 755 and nagios user owns<br>
the plugins and I've run successfully with nagios user and got 0 output.  I'm<br>
really stumped!!<br>
<br>
Here's the code for the plugins:<br>
<br>
*******************************************<br>
<a href="http://check7204temp.pl" target="_blank">check7204temp.pl</a>:<br>
<br>
#!/usr/bin/perl -w<br>
<br>
# <a href="http://check_ciscotemp.pl" target="_blank">check_ciscotemp.pl</a><br>
<br>
#<br>
<br>
# Copyright (C) 2000 Leland E. Vandervort <<a href="mailto:leland@mmania.com">leland@mmania.com</a>> # # This program<br>
is free software; you can redistribute it and/or # modify it under the terms of<br>
the GNU General Public License # as published by the Free Software Foundation;<br>
either version 2 # of the License, or (at your option) any later version.<br>
<br>
#<br>
<br>
# This program is distributed in the hope that it will be useful, # but WITHOUT<br>
ANY WARRANTY; without even the implied warranty # of MERCHANTABILITY or FITNESS<br>
FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details.<br>
<br>
#<br>
<br>
# you should have received a copy of the GNU General Public License # along with<br>
this program (or with Nagios); if not, write to the # Free Software Foundation,<br>
Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA<br>
####################################<br>
<br>
# Nagios pluging to check inlet and outlet temperatures on # Cisco router<br>
platforms which support environmental monitoring # (7200, 7500, GSR12000...)<br>
####################################<br>
<br>
# default temperature thresholds are 30C for inlet, 40C outlet.<br>
<br>
# if input or output is less than thresholds, returns OK # if equal to (the<br>
temps don't change that rapidly) returns WARNING # if greater than threshold,<br>
returns CRITICAL # if undetermined, or cannot access environmental, returns<br>
UNKNOWN # (in accordance with the plugin coding guidelines)<br>
####################################<br>
<br>
use Net::SNMP;<br>
<br>
use Getopt::Long;<br>
<br>
#use strict;<br>
<br>
&Getopt::Long::config('auto_abbrev');<br>
<br>
#my $critical_vals;<br>
<br>
#my $warning_vals;<br>
<br>
#my $inlet_warn;<br>
<br>
#my $outlet_warn;<br>
<br>
#my $status;<br>
<br>
my $response = "";<br>
<br>
my $timeout = 10;<br>
<br>
my $community = "blah";<br>
<br>
my $port = 161;<br>
<br>
my $INTAKE_TEMP = "1.3.6.1.4.1.9.9.13.1.3.1.3.1"; my $OUTLET_TEMP =<br>
"1.3.6.1.4.1.9.9.13.1.3.1.3.3"; my $in_temp; my $out_temp; my $inlet_thresh =<br>
30; my $outlet_thresh = 34; my $hostnm; #my $OID; #my $session; #my $state; #my<br>
$error;<br>
<br>
my %STATUSCODE = ( 'UNKNOWN' => '-1',<br>
<br>
'OK' => '0',<br>
<br>
'WARNING' => '1',<br>
<br>
'CRITICAL' => '2');<br>
<br>
my $state = "UNKNOWN";<br>
<br>
<br>
<br>
$SIG{'ALRM'} = sub {<br>
<br>
print "ERROR: No snmp response from $hostnm (sigALRM)\n";<br>
<br>
exit($STATUSCODE{"UNKNOWN"});<br>
<br>
};<br>
<br>
Getopt::Long::Configure('bundling');<br>
<br>
$status = GetOptions<br>
<br>
("community=s", \$community,<br>
<br>
"C=s", \$community,<br>
<br>
"H=s", \$hostnm,<br>
<br>
"hostname=s", \$hostnm,<br>
<br>
"port=i", \$port,<br>
<br>
"timeout=i", \$timeout,<br>
<br>
"c=s", \$critical_vals,<br>
<br>
"w=s", \$warning_vals,<br>
<br>
"ithresh=i", \$inlet_thresh,<br>
<br>
"othresh=i", \$outlet_thresh);<br>
<br>
if($status == 0) {<br>
<br>
&show_help;<br>
<br>
}<br>
<br>
unless (defined($hostnm)) {<br>
<br>
$hostnm = shift || &show_help;<br>
<br>
}<br>
<br>
if (defined($critical_vals)) {<br>
<br>
if ($critical_vals =~ m/^([0-9]+)[,:]([0-9]+)$/) {<br>
<br>
($inlet_thresh,$outlet_thresh) = ($1, $2);<br>
<br>
} else {<br>
<br>
die "Cannot Parse Critical Thresholds\n";<br>
<br>
}<br>
<br>
}<br>
<br>
if (defined($warning_vals)) {<br>
<br>
if ($warning_vals =~ m/^([0-9]+)[:,]([0-9]+)$/) {<br>
<br>
($inlet_warn,$outlet_warn) = ($1, $2);<br>
<br>
} else {<br>
<br>
die "Cannot Parse Warning Thresholds\n";<br>
<br>
}<br>
<br>
}else{<br>
<br>
$inlet_warn=$inlet_thresh;<br>
<br>
$outlet_warn=$outlet_thresh;<br>
<br>
}<br>
<br>
alarm($timeout);<br>
<br>
$in_temp = &SNMPGET($INTAKE_TEMP);<br>
<br>
$out_temp = &SNMPGET($OUTLET_TEMP);<br>
<br>
if (($in_temp < $inlet_thresh) && ($out_temp < $outlet_thresh)) {<br>
<br>
$state = "OK";<br>
<br>
}<br>
<br>
elsif (($in_temp == $inlet_thresh) || ($out_temp == $outlet_thresh)) {<br>
<br>
if(($in_temp > $inlet_thresh) || ($out_temp > $outlet_thresh)) {<br>
<br>
$state = "CRITICAL";<br>
<br>
}<br>
<br>
else {<br>
<br>
$state = "WARNING";<br>
<br>
}<br>
<br>
}<br>
<br>
elsif (($in_temp > $inlet_thresh) || ($out_temp > $outlet_thresh)) {<br>
<br>
$state = "CRITICAL";<br>
<br>
}<br>
<br>
else {<br>
<br>
$state = "WARNING";<br>
<br>
}<br>
<br>
print "$state Inlet Temp: $in_temp Outlet Temp: $out_temp\n";<br>
exit($STATUSCODE{$state});<br>
<br>
sub show_help {<br>
<br>
printf("\nPerl envmon temperature plugin for Nagios\n");<br>
<br>
printf("Usage:\n");<br>
<br>
printf("<br>
<br>
check_ciscotemp [options] <hostname><br>
<br>
Options:<br>
<br>
-C snmp-community<br>
<br>
-p snmp-port<br>
<br>
-i input temperature threshold<br>
<br>
-o output temperature threshold<br>
<br>
");<br>
<br>
printf("Copyright (C)2000 Leland E. Vandervort\n");<br>
<br>
printf("check_ciscotemp comes with absolutely NO WARRANTY either implied or<br>
explicit\n");<br>
<br>
printf("This program is licensed under the terms of the\n");<br>
<br>
printf("GNU General Public License\n(check source code for details)\n\n\n");<br>
<br>
exit($STATUSCODE{"UNKNOWN"});<br>
<br>
}<br>
<br>
sub SNMPGET {<br>
<br>
$OID = shift;<br>
<br>
($session,$error) = Net::SNMP->session(<br>
<br>
Hostname => $hostnm,<br>
<br>
Community => $community,<br>
<br>
Port => $port<br>
<br>
);<br>
<br>
if(!defined($session)) {<br>
<br>
printf("$state %s\n", $error);<br>
<br>
exit($STATUSCODE{$state});<br>
<br>
}<br>
<br>
if(!defined($response = $session->get_request($OID))) {<br>
<br>
printf("$state %s\n", $session->error());<br>
<br>
$session->close();<br>
<br>
exit($STATUSCODE{$state});<br>
<br>
}<br>
<br>
$session->close();<br>
<br>
return($response->{$OID});<br>
<br>
}<br>
<br>
*******************************************************<br>
code for <a href="http://checkciscotemp.pl" target="_blank">checkciscotemp.pl</a> <br>
<br>
#!/usr/bin/perl -w<br>
<br>
# <a href="http://check_ciscotemp.pl" target="_blank">check_ciscotemp.pl</a><br>
<br>
#<br>
<br>
# Copyright (C) 2000 Leland E. Vandervort <<a href="mailto:leland@mmania.com">leland@mmania.com</a>> # # This program<br>
is free software; you can redistribute it and/or # modify it under the terms of<br>
the GNU General Public License # as published by the Free Software Foundation;<br>
either version 2 # of the License, or (at your option) any later version.<br>
<br>
#<br>
<br>
# This program is distributed in the hope that it will be useful, # but WITHOUT<br>
ANY WARRANTY; without even the implied warranty # of MERCHANTABILITY or FITNESS<br>
FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details.<br>
<br>
#<br>
<br>
# you should have received a copy of the GNU General Public License # along with<br>
this program (or with Nagios); if not, write to the # Free Software Foundation,<br>
Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA<br>
####################################<br>
<br>
# Nagios pluging to check inlet and outlet temperatures on # Cisco router<br>
platforms which support environmental monitoring # (7200, 7500, GSR12000...)<br>
####################################<br>
<br>
# default temperature thresholds are 30C for inlet, 40C outlet.<br>
<br>
# if input or output is less than thresholds, returns OK # if equal to (the<br>
temps don't change that rapidly) returns WARNING # if greater than threshold,<br>
returns CRITICAL # if undetermined, or cannot access environmental, returns<br>
UNKNOWN # (in accordance with the plugin coding guidelines)<br>
####################################<br>
<br>
use Net::SNMP;<br>
<br>
use Getopt::Long;<br>
<br>
#use strict;<br>
<br>
&Getopt::Long::config('auto_abbrev');<br>
<br>
#my $critical_vals;<br>
<br>
#my $warning_vals;<br>
<br>
#my $inlet_warn;<br>
<br>
#my $outlet_warn;<br>
<br>
#my $status;<br>
<br>
my $response = "";<br>
<br>
my $timeout = 10;<br>
<br>
my $community = "blah";<br>
<br>
my $port = 161;<br>
<br>
my $INTAKE_TEMP = "1.3.6.1.4.1.9.9.13.1.3.1.3.1"; my $OUTLET_TEMP =<br>
"1.3.6.1.4.1.9.9.13.1.3.1.3.3"; my $in_temp; my $out_temp; my $inlet_thresh =<br>
22; my $outlet_thresh = 32; my $hostnm; #my $OID; #my $session; #my $state; #my<br>
$error;<br>
<br>
my %STATUSCODE = ( 'UNKNOWN' => '-1',<br>
<br>
'OK' => '0',<br>
<br>
'WARNING' => '1',<br>
<br>
'CRITICAL' => '2');<br>
<br>
my $state = "UNKNOWN";<br>
<br>
<br>
<br>
$SIG{'ALRM'} = sub {<br>
<br>
print "ERROR: No snmp response from $hostnm (sigALRM)\n";<br>
<br>
exit($STATUSCODE{"UNKNOWN"});<br>
<br>
};<br>
<br>
Getopt::Long::Configure('bundling');<br>
<br>
$status = GetOptions<br>
<br>
("community=s", \$community,<br>
<br>
"C=s", \$community,<br>
<br>
"H=s", \$hostnm,<br>
<br>
"hostname=s", \$hostnm,<br>
<br>
"port=i", \$port,<br>
<br>
"timeout=i", \$timeout,<br>
<br>
"c=s", \$critical_vals,<br>
<br>
"w=s", \$warning_vals,<br>
<br>
"ithresh=i", \$inlet_thresh,<br>
<br>
"othresh=i", \$outlet_thresh);<br>
<br>
if($status == 0) {<br>
<br>
&show_help;<br>
<br>
}<br>
<br>
unless (defined($hostnm)) {<br>
<br>
$hostnm = shift || &show_help;<br>
<br>
}<br>
<br>
if (defined($critical_vals)) {<br>
<br>
if ($critical_vals =~ m/^([0-9]+)[,:]([0-9]+)$/) {<br>
<br>
($inlet_thresh,$outlet_thresh) = ($1, $2);<br>
<br>
} else {<br>
<br>
die "Cannot Parse Critical Thresholds\n";<br>
<br>
}<br>
<br>
}<br>
<br>
if (defined($warning_vals)) {<br>
<br>
if ($warning_vals =~ m/^([0-9]+)[:,]([0-9]+)$/) {<br>
<br>
($inlet_warn,$outlet_warn) = ($1, $2);<br>
<br>
} else {<br>
<br>
die "Cannot Parse Warning Thresholds\n";<br>
<br>
}<br>
<br>
}else{<br>
<br>
$inlet_warn=$inlet_thresh;<br>
<br>
$outlet_warn=$outlet_thresh;<br>
<br>
}<br>
<br>
alarm($timeout);<br>
<br>
$in_temp = &SNMPGET($INTAKE_TEMP);<br>
<br>
$out_temp = &SNMPGET($OUTLET_TEMP);<br>
<br>
if (($in_temp < $inlet_thresh) && ($out_temp < $outlet_thresh)) {<br>
<br>
$state = "OK";<br>
<br>
}<br>
<br>
elsif (($in_temp == $inlet_thresh) || ($out_temp == $outlet_thresh)) {<br>
<br>
if(($in_temp > $inlet_thresh) || ($out_temp > $outlet_thresh)) {<br>
<br>
$state = "CRITICAL";<br>
<br>
}<br>
<br>
else {<br>
<br>
$state = "WARNING";<br>
<br>
}<br>
<br>
}<br>
<br>
elsif (($in_temp > $inlet_thresh) || ($out_temp > $outlet_thresh)) {<br>
<br>
$state = "CRITICAL";<br>
<br>
}<br>
<br>
else {<br>
<br>
$state = "WARNING";<br>
<br>
}<br>
<br>
print "$state Inlet Temp: $in_temp Outlet Temp: $out_temp\n";<br>
exit($STATUSCODE{$state});<br>
<br>
sub show_help {<br>
<br>
printf("\nPerl envmon temperature plugin for Nagios\n");<br>
<br>
printf("Usage:\n");<br>
<br>
printf("<br>
<br>
check_ciscotemp [options] <hostname><br>
<br>
Options:<br>
<br>
-C snmp-community<br>
<br>
-p snmp-port<br>
<br>
-i input temperature threshold<br>
<br>
-o output temperature threshold<br>
<br>
");<br>
<br>
printf("Copyright (C)2000 Leland E. Vandervort\n");<br>
<br>
printf("check_ciscotemp comes with absolutely NO WARRANTY either implied or<br>
explicit\n");<br>
<br>
printf("This program is licensed under the terms of the\n");<br>
<br>
printf("GNU General Public License\n(check source code for details)\n\n\n");<br>
<br>
exit($STATUSCODE{"UNKNOWN"});<br>
<br>
}<br>
<br>
sub SNMPGET {<br>
<br>
$OID = shift;<br>
<br>
($session,$error) = Net::SNMP->session(<br>
<br>
Hostname => $hostnm,<br>
<br>
Community => $community,<br>
<br>
Port => $port<br>
<br>
);<br>
<br>
if(!defined($session)) {<br>
<br>
printf("$state %s\n", $error);<br>
<br>
exit($STATUSCODE{$state});<br>
<br>
}<br>
<br>
if(!defined($response = $session->get_request($OID))) {<br>
<br>
printf("$state %s\n", $session->error());<br>
<br>
$session->close();<br>
<br>
exit($STATUSCODE{$state});<br>
<br>
}<br>
<br>
$session->close();<br>
<br>
return($response->{$OID});<br>
<br>
}<br>
<br>
*********************************************<br>
<br>
Thanks,<br>
<br>
Missy<br>
<br>
<br>
<br>
<br>
------------------------------------------------------------------------------<br>
This SF.net email is sponsored by<br>
<br>
Make an app they can't live without<br>
Enter the BlackBerry Developer Challenge<br>
<a href="http://p.sf.net/sfu/RIM-dev2dev" target="_blank">http://p.sf.net/sfu/RIM-dev2dev</a><br>
_______________________________________________<br>
Nagios-users mailing list<br>
<a href="mailto:Nagios-users@lists.sourceforge.net">Nagios-users@lists.sourceforge.net</a><br>
<a href="https://lists.sourceforge.net/lists/listinfo/nagios-users" target="_blank">https://lists.sourceforge.net/lists/listinfo/nagios-users</a><br>
::: Please include Nagios version, plugin version (-v) and OS when reporting any issue.<br>
::: Messages without supporting info will risk being sent to /dev/null<br>
------------------------------------------------------------------------------<br>
This SF.net email is sponsored by<br>
<br>
Make an app they can't live without<br>
Enter the BlackBerry Developer Challenge<br>
<a href="http://p.sf.net/sfu/RIM-dev2dev" target="_blank">http://p.sf.net/sfu/RIM-dev2dev</a><br>
_______________________________________________<br>
Nagios-users mailing list<br>
<a href="mailto:Nagios-users@lists.sourceforge.net">Nagios-users@lists.sourceforge.net</a><br>
<a href="https://lists.sourceforge.net/lists/listinfo/nagios-users" target="_blank">https://lists.sourceforge.net/lists/listinfo/nagios-users</a><br>
::: Please include Nagios version, plugin version (-v) and OS when reporting any issue.<br>
::: Messages without supporting info will risk being sent to /dev/null</div></div></blockquote></div><br>