<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hello!<div><br></div><div>If this is the wrong list to submit this, please let me know.</div><div><br></div><div>I just set up Nagios on a server.  I can't get this plugin to work with check_nrpe.</div><div><br></div><div><b>On the remote machine -192.168.254.11 (it works fine):</b></div><div>/usr/local/nagios/etc/nrpe.cfg</div><div>...</div><div>command[check_powerterm]=/usr/local/nagios/libexec/check_connections.pl -w 80 -c 100 -C PowerTerm</div><div><br></div><div><div>[root@VM libexec]# ./check_connections.pl -w 80 -c 100 -C PowerTerm</div><div>OK - Established connections: 36</div></div><div><br></div><div><br></div><div><b>On the Nagios Server (it always shows "0" connections):</b></div><div><div>[root@backup libexec]# ./check_nrpe -H 192.168.254.11 -p 5666 -c check_powerterm</div><div>OK - Established connections: 0</div><div><br></div><div>I was wondering why this always shows "0" Established connections...?</div><div>I am using the check_nrpe plugin for lots of other plugins. All work fine. </div><div><br></div><div>Thanks!</div><div><br></div><div>Mark</div><div><br></div><div><br></div><div>***********</div><div>check_connections.pl</div><div><br></div><div><div>#!/usr/bin/perl -w</div><div>## Nagios Plugin for checking the number of established network connections</div><div>## You can check the number of established network connections of a specific user</div><div>## or the number of network connections of a given command. Those two options</div><div>## can be combined.</div><div>##</div><div>## Note: This script uses lsof with sudo.</div><div>## Make sure your /etc/sudoers is properly configured.</div><div>## For example put the following line into /etc/sudoers</div><div>##      nagios      ALL=NOPASSWD: /usr/sbin/lsof</div><div>## Please refer to the manpages for further options.</div><div>##</div><div>## Copyright 2007 Benjamin Hackl</div><div>## Released under the LGPL,</div><div>## visit <a href="http://www.gnu.org/licenses/lgpl.html">http://www.gnu.org/licenses/lgpl.html</a> for details.</div><div><br></div><div>use POSIX;</div><div>use strict;</div><div>use Getopt::Long;</div><div><br></div><div>use vars qw($opt_V $opt_h $PROGNAME $opt_w $opt_c $opt_t $opt_u $opt_C $status);</div><div>use lib  "/usr/local/nagios/libexec/";</div><div>use utils qw(%ERRORS &print_revision &support &usage );</div><div>use vars qw($PROGNAME);</div><div><br></div><div>my $count = 0;</div><div>my $exit_mode;</div><div>my $lsof_bin = "sudo /usr/sbin/lsof";</div><div>my $lsof_option = '';</div><div><br></div><div>sub print_help ();</div><div>sub print_usage ();</div><div>sub process_arguments ();</div><div><br></div><div>Getopt::Long::Configure('bundling');</div><div>$status = process_arguments();</div><div>if ($status) {</div><div>   print("ERROR: processing arguments\n");</div><div>   exit $ERRORS{"UNKNOWN"};</div><div>}</div><div><br></div><div>$SIG{'ALRM'} = sub {</div><div>   print("ERROR: Timed out.");</div><div>   exit $ERRORS{"WARNING"};</div><div>};</div><div><br></div><div>if (!$opt_u && !$opt_C) {</div><div>  print("ERROR: specify either a loginname or a command.\n");</div><div>  exit $ERRORS{"WARNING"};</div><div>}</div><div><br></div><div>if ($opt_u && $opt_u !~ m/\d+|\w+/) {</div><div>  print("ERROR: user must be an uid or a login name.\n");</div><div>  exit $ERRORS{"WARNING"};</div><div>}</div><div><br></div><div>##</div><div>if ($opt_u) {</div><div>  $lsof_option .= "-u $opt_u ";</div><div>}</div><div>if ($opt_C) {</div><div>  $lsof_option .= "-c $opt_C ";</div><div>}</div><div><br></div><div>if (!(open(LSOF, "$lsof_bin -n -P -a $lsof_option -i | "))) {</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>print "ERROR: could not open lsof!\n";</div><div><span class="Apple-tab-span" style="white-space:pre">     </span>exit $ERRORS{'UNKNOWN'};</div><div>}</div><div><br></div><div><br></div><div>while (<LSOF>) {</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>chomp();</div><div><span class="Apple-tab-span" style="white-space:pre">     </span>if (/ESTABLISHED/) {</div><div><span class="Apple-tab-span" style="white-space:pre">         </span># only count established connections</div><div><span class="Apple-tab-span" style="white-space:pre">         </span>$count++;</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>}</div><div>}</div><div>close(LSOF);</div><div><br></div><div>if ($count >= $opt_c) {</div><div><span class="Apple-tab-span" style="white-space:pre">       </span>print "CRITICAL - ";</div><div><span class="Apple-tab-span" style="white-space:pre">       </span>$exit_mode = $ERRORS{"CRITICAL"};</div><div>} elsif( $count >= $opt_w) {</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>print "WARNING - ";</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>$exit_mode = $ERRORS{"WARNING"};</div><div>} else {</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>print "OK - ";</div><div><span class="Apple-tab-span" style="white-space:pre">     </span>$exit_mode = $ERRORS{"OK"};</div><div>}</div><div>print "Established connections: $count\n";</div><div>exit $exit_mode;</div><div><br></div><div><br></div><div>sub process_arguments() {</div><div>   GetOptions</div><div>             ("V"   => \$opt_V, "version"    => \$opt_V,</div><div>              "h"   => \$opt_h, "help"       => \$opt_h,</div><div>              "w=i" => \$opt_w, "warning=i"  => \$opt_w,   # warning if above this number</div><div>              "c=i" => \$opt_c, "critical=i" => \$opt_c,   # critical if above this number</div><div>              "t=i" => \$opt_t, "timeout=i"  => \$opt_t,</div><div>              "u=s" => \$opt_u, "user=s"     => \$opt_u,   # username or uid</div><div>              "C=s" => \$opt_C, "command=s"  => \$opt_C    # programm name</div><div>              );</div><div><br></div><div>   if ($opt_V) {</div><div>     print_revision($PROGNAME, '$Revision: 1.0 $ ');</div><div>     exit $ERRORS{'OK'};</div><div>   }</div><div>   if ($opt_h) {</div><div>     print_help();</div><div>     exit $ERRORS{'OK'};</div><div>   }</div><div>   unless (defined $opt_t) {</div><div>     $opt_t = $utils::TIMEOUT; # default timeout</div><div>   }</div><div>   unless (defined $opt_w && defined $opt_c) {</div><div>     print_usage();</div><div>     exit $ERRORS{'UNKNOWN'};</div><div>   }</div><div>   if ($opt_w >= $opt_c) {</div><div>     print("Warning (-w) cannot be greater or equal than critical (-c)!\n");</div><div>     exit $ERRORS{'UNKNOWN'};</div><div>   }</div><div>   if (defined $opt_w && !defined $opt_c) {</div><div>     print("Need critical(-c) when warning(-w) is set.\n");</div><div>     exit $ERRORS{'UNKNOWN'};</div><div>   } elsif(!defined $opt_w && defined $opt_c) {</div><div>     print("Need warning(-w) when critical(-c) is set.\n");</div><div>     exit $ERRORS{'UNKNOWN'};</div><div>   }</div><div><br></div><div>   return $ERRORS{'OK'};</div><div>}</div><div><br></div><div>sub print_usage() {</div><div>   print "Usage: $PROGNAME -w <warn> -c <crit> [-u loginname|uid] [-C command name] [-t <timeout>] [-v verbose]\n";</div><div>}</div><div><br></div><div>sub print_help() {</div><div>   print_revision($PROGNAME,'$Revision: 1.0 $');</div><div>   print "Copyright (c)2007 Benjamin Hackl\n";</div><div>   print "  Checks the established network connection a specific user and/or a specific command\n";</div><div>   print "  has open(ed).\n\n";</div><div>   print "-w (--warning)  Generates a warning if connections are above this value.\n";</div><div>   print "-c (--critical) Generates a critical alert if connections are above this value.\n";</div><div>   print "-u (--user)     Specifies the loginname or uid.\n";</div><div>   print "-C (--command)  Specifies the name of the command executed.\n";</div><div>   print "-t (--timeout)  Plugin timeout in seconds (default: $utils::TIMEOUT)\n";</div><div>   print "-h (--help)     This screen.\n";</div><div>   print "-V (--version)  Plugin Version.\n";</div><div>   print "\n\n";</div><div>   print "Note: -w and -c are required arguments given in numbers.\n";</div><div>   print "      either -u or -C is required. -u can be given as a loginname or as an uid.\n";</div><div>   print "      -C can be given as the full command name or as a part of the command.\n";</div><div>   print "example:\n";</div><div>   print " $PROGNAME -w 100 -c 120 -u apache\n";</div><div>   print "Generates a warning if the user apache has more than 100 established connections\n";</div><div>   print "and an error if the established connection count is above 120.\n";</div><div>   print " $PROGNAME -w 100 -c 120 -c httpd\n";</div><div>   print "Generates a warning if the process matching the name 'httpd' has more than 100\n";</div><div>   print "established connections and an error if this values is above 120.\n\n";</div><div>   support();</div><div>}</div><div><br></div><div># [EOF]</div><div><br></div></div><div>***********</div></div></body></html>