Antonio Fernando Evangelista wrote: > > Hi. > > I’m writing a new Nagios plugin that will be responsible to monitor > the server internal components temperature. > > I have a Proliant DL380 G5 with the HP Management CLI for Linux > installed on it, and I wrote a perl program to check the > > Temperature. > > When I execute the perl script directly from the command prompt, I > receive a message indicating the behavior of the > > Temperature. But, when I call this script perl using check_nrpe > command, I received the same message, but the information > > of the temperature stays in blank. > > Following are my nrpe.cfg configuration file and the perl script. > > Does anybody know how can I fix this? > > *_NRPE.CFG_* > > pid_file=/var/run/nrpe.pid > > server_port=5666 > > nrpe_user=nagios > > nrpe_group=nagios > > allowed_hosts=172.16.4.56,localhost > > dont_blame_nrpe=0 > > debug=1 > > command_timeout=60 > > connection_timeout=300 > > command[check_load]=/usr/local/nagios/libexec/check_load -w 3,3,3 -c 4,4,4 > > command[check_sda1]=/usr/local/nagios/libexec/check_disk -w 15% -c 10% > -p /dev/mapper/vg01-lvol1 > > command[check_sda2]=/usr/local/nagios/libexec/check_disk -w 15% -c 10% > -p /dev/cciss/c0d0p1 > > command[check_sda3]=/usr/local/nagios/libexec/check_disk -w 15% -c 10% > -p /dev/mapper/vg01-lvol6 > > command[check_sda4]=/usr/local/nagios/libexec/check_disk -w 15% -c 10% > -p /dev/mapper/vg01-lvol4 > > command[check_sda5]=/usr/local/nagios/libexec/check_disk -w 15% -c 10% > -p /dev/mapper/vg01-lvol3 > > command[check_sda6]=/usr/local/nagios/libexec/check_disk -w 15% -c 10% > -p /dev/mapper/vg01-lvol2 > > command[check_sda7]=/usr/local/nagios/libexec/check_disk -w 15% -c 10% > -p /dev/sda7 > > command[check_sda8]=/usr/local/nagios/libexec/check_disk -w 15% -c 10% > -p /dev/sda8 > > command[check_sda9]=/usr/local/nagios/libexec/check_disk -w 15% -c 10% > -p /dev/sda9 > > command[check_sda10]=/usr/local/nagios/libexec/check_disk -w 15% -c > 10% -p /dev/sda10 > > command[check_drbd0]=/usr/local/nagios/libexec/check_disk -w 15% -c > 10% -p /dev/drbd0 > > command[check_drbd1]=/usr/local/nagios/libexec/check_disk -w 15% -c > 10% -p /dev/drbd1 > > command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 2 > -c 4 -s Z > > command[check_informix]=/usr/local/nagios/libexec/check_procs -c 1:50 > -C oninit > > command[check_crond]=/usr/local/nagios/libexec/check_procs -c 1:50 -C > crond > > command[check_cupsd]=/usr/local/nagios/libexec/check_procs -c 1:50 -C > cupsd > > command[check_freemem]=/usr/local/nagios/libexec/check_mem.pl -w 10 -c > 5 -f > > command[check_swap]=/usr/local/nagios/libexec/check_swap -w 90% -c 80% > > command[check_bonding]=/usr/local/nagios/libexec/check_linux_bonding > > command[check_iozone]=/usr/local/nagios/libexec/check_temperature_hp.pl > -s1 -w80 -c85 > > command[check_ambient]=/usr/local/nagios/libexec/check_temperature_hp.pl > -s2 -w80 -c85 > > command[check_sensor1_cpu1]=/usr/local/nagios/libexec/check_temperature_hp.pl > -s3 -w80 -c85 > > command[check_sensor2_cpu1]=/usr/local/nagios/libexec/check_temperature_hp.pl > -s4 -w80 -c85 > > command[check_teste]=/usr/local/nagios/libexec/check_teste.pl -s 4 -w > 80 -c 85 > > *_The Perl program:_* > > #! /usr/bin/perl -w > > # $Id: check_teste.pl > > use lib "/usr/local/nagios/libexec" ; > > # Tell Perl what we need to use > > use strict; > > use Getopt::Std; > > # Predefined exit codes for Nagios > > use vars qw($opt_s $opt_c $opt_f $opt_u $opt_w $opt_C $opt_v %exit_codes); > > #use vars qw($numero $descricao $tempatual $templimite $sensor); > > %exit_codes = ('UNKNOWN' ,-1, > > 'OK' , 0, > > 'WARNING' , 1, > > 'CRITICAL', 2, > > ); > > # Get our variables, do our checking: > > init(); > > get_temperature(); > > # Show usage > > sub usage() { > > print "\ncheck_mem.pl v1.0 - Nagios Plugin\n\n"; > > print "usage:\n"; > > print " check_mem.pl -<f|u> -w <warnlevel> -c <critlevel>\n\n"; > > print "options:\n"; > > print " -f Check FREE memory\n"; > > print " -u Check USED memory\n"; > > print " -C Count OS caches as FREE memory\n"; > > print " -w PERCENT Percent free/used when to warn\n"; > > print " -c PERCENT Percent free/used when critical\n"; > > print "\nCopyright (C) 2000 Dan Larsson <d...@tyfon.net>\n"; > > print "check_mem.pl comes with absolutely NO WARRANTY either implied > or explicit\n"; > > print "This program is licensed under the terms of the\n"; > > print "GNU General Public License (check source code for details)\n"; > > exit $exit_codes{'UNKNOWN'}; > > } > > #----------------------------------------------------------------------------- > > # Verifica parametros passados > > #----------------------------------------------------------------------------- > > sub init { > > # Get the options > > if ($#ARGV le 0) { > > &usage; > > } > > else { > > getopts('c:s:w:vh'); > > } > > # Shortcircuit the switches > > if (!$opt_w or $opt_w == 0 or !$opt_c or $opt_c == 0) { > > print "*** You must define WARN and CRITICAL levels!\n"; > > &usage; > > } > > elsif (!$opt_s) { > > print "*** You must select the SENSOR number!\n"; > > &usage; > > } > > # Check if levels are sane > > if ($opt_w >= $opt_c) { > > print "*** WARN level must not be greather than CRITICAL!\n"; > > &usage; > > } > > } > > #----------------------------------------------------------------------------- > > # Termina o programa enviando mensagem e postando RC > > #----------------------------------------------------------------------------- > > sub finish { > > my ($msg,$state) = @_; > > print "$msg\n"; > > exit $state; > > } > > #----------------------------------------------------------------------------- > > # Checa a temperatura do sensor solicitado > > #----------------------------------------------------------------------------- > > sub get_temperature { > > my $numero=0; > > my $descricao=0; > > my $tempatual=0; > > my $templimite=0; > > my $sensor=0; > > my $command=0; > > $sensor = $opt_s; > > $command=sprintf("/usr/local/nagios/libexec/check_temp_atual.sh > %s",$sensor); > > $tempatual = `$command`; > > chomp($tempatual); > > $command=sprintf("/usr/local/nagios/libexec/check_temp_thre.sh > %s",$sensor); > > $templimite = `$command`; > > chomp($templimite); > > $numero = $opt_s; > > my $twarning = $templimite - ($templimite-($templimite * ($opt_w / 100))); > > my $tcritical =$templimite - ($templimite-($templimite * ($opt_c / 100))); > > if($tempatual < $twarning) > > { > > print STDOUT "OK: TEMPERATURA ATUAL: $tempatual C - THRESHOLD: > $templimite C\n"; > > exit(0); > > } > > elsif($tempatual < $templimite) > > { > > print STDOUT "WARNING: TEMPERATURA ATUAL: $tempatual C - THRESHOLD: > $templimite C\n"; > > exit(1); > > } > > else > > { > > print STDOUT "CRITICAL: TEMPERATURA ATUAL: $tempatual C - THRESHOLD: > $templimite C\n"; > > exit(2); > > } > > } > > *If I execute the script directly from the command prompt:* > > [r...@lnxaphmoa04 libexec]# /usr/local/nagios/libexec/check_teste.pl > -s4 -w80 -c85 > > OK: TEMPERATURA ATUAL: 30 C - THRESHOLD: 127 C > > *If I execute the script calling through the check_nrpe command:* > > [r...@lnxaphmoa04 libexec]# /usr/local/nagios/libexec/check_nrpe -H > localhost -c check_teste > > CRITICAL: TEMPERATURA ATUAL: C - THRESHOLD: C > > Thanks in advance. > > Regards, > Make sure your script have sudo permissions .
most system calls to hardware require root level access , so when the nrpe is running the script as nagios user , it is not executed properly and hence the output is not generated and rendered. Assaf -- Never,Ever Cut A Deal With a Dragon I am doing a Charity Bike ride On the 27 of June for the Capital to Coast Charity. Please help by Donating http://www.justgiving.com/Lovefilm-capital-to-coast ------------------------------------------------------------------------------ _______________________________________________ Nagios-users mailing list Nagios-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nagios-users ::: Please include Nagios version, plugin version (-v) and OS when reporting any issue. ::: Messages without supporting info will risk being sent to /dev/null