aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorGravatar Subhendu Ghosh <sghosh@users.sourceforge.net> 2003-02-18 04:05:01 +0000
committerGravatar Subhendu Ghosh <sghosh@users.sourceforge.net> 2003-02-18 04:05:01 +0000
commit8d461952d4a7ade739313692a6fca78dee68ed1c (patch)
tree9287c391babd9edd065a094b42e88a20148645d7 /contrib
parent193533b9e33a03a9ce4692062fa787d25ae5a45b (diff)
downloadmonitoring-plugins-8d461952d4a7ade739313692a6fca78dee68ed1c.tar.gz
Appletalk ping plugin
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@336 f882894a-f735-0410-b71e-b25c423dba1c
Diffstat (limited to 'contrib')
-rw-r--r--contrib/check_appletalk.pl210
1 files changed, 210 insertions, 0 deletions
diff --git a/contrib/check_appletalk.pl b/contrib/check_appletalk.pl
new file mode 100644
index 00000000..0b7754fe
--- /dev/null
+++ b/contrib/check_appletalk.pl
@@ -0,0 +1,210 @@
+#! /usr/bin/perl -wT
+#
+# check_atalk_ping plugin for nagios
+#
+# usage:
+# check_atalk_ping atalkaddress
+#
+# Checks if an atalkhost responds to an atalk echo
+# using "aecho"
+#
+# initial version: 23 October 2002 by Stefan Beck, IT Software Solutions
+# current status: $Revision$
+#
+# Copyright Notice: GPL
+#
+BEGIN {
+ if ( $0 =~ m/^(.*?)[\/\\]([^\/\\]+)$/ ) {
+ $runtimedir = $1;
+ $PROGNAME = $2;
+ }
+ delete $ENV{'LANG'};
+}
+
+use strict;
+use lib utils.pm;
+
+use utils qw($TIMEOUT %ERRORS &print_revision &support);
+use vars qw($PROGNAME);
+
+$PROGNAME = "check_atalk";
+
+my (
+ $verbose, $host, $warning_avg, $warning_loss,
+ $critical_avg, $critical_loss, $count, $cmd,
+ $avg, $loss, $line
+);
+my ( $opt_c, $opt_w, $opt_H, $opt_p );
+$opt_c = $opt_w = $opt_p = $opt_H = '';
+
+sub print_help ();
+sub print_usage ();
+sub help ();
+sub version ();
+
+# Just in case of problems, let's not hang NetSaint
+$SIG{'ALRM'} = sub {
+ print "Plugin Timeout\n";
+ exit 2;
+};
+alarm($TIMEOUT);
+
+delete @ENV{ 'PATH', 'IFS', 'CDPATH', 'ENV', 'BASH_ENV' };
+
+use Getopt::Long;
+Getopt::Long::Configure( 'bundling', 'no_ignore_case' );
+GetOptions(
+ "V|version" => \&version,
+ "h|help" => \&help,
+ "p|packets=i" => \$opt_p,
+ "c|critical=s" => \$opt_c,
+ "w|warning=s" => \$opt_w,
+ "H|hostname=s" => \$opt_H
+);
+
+
+# appletalk hostname ot address
+$opt_H = shift unless ($opt_H);
+unless ($opt_H) { print_usage (); exit $ERRORS{'UNKNOWN'}; }
+if ( $opt_H && $opt_H =~ m/^([-a-zA-Z\.\:0-9]+)$/ ) {
+ $host = $1;
+}
+else {
+ print "$opt_H is not a valid host name\n";
+ exit $ERRORS{'UNKNOWN'};
+}
+
+# number of packets
+$opt_p = 5 unless $opt_p;
+if ( $opt_p && $opt_p =~ m/^([1-9]+[0-9]*)$/ ) {
+ $count = $1;
+}
+else {
+ print "$opt_p is not a valid packet number\n";
+ exit $ERRORS{'UNKNOWN'};
+}
+
+if ( $opt_w && $opt_w =~ m/^([1-9]+[0-9]*),([1-9][0-9]*)%$/ ) {
+ $warning_avg = $1;
+ $warning_loss = $2;
+}
+else {
+ print "$opt_w is not a valid threshold\n";
+ exit $ERRORS{'UNKNOWN'};
+}
+
+if ( $opt_c && $opt_c =~ m/^([1-9]+[0-9]*),([1-9][0-9]*)%$/ ) {
+ $critical_avg = $1;
+ $critical_loss = $2;
+}
+else {
+ print "$opt_c is not a valid threshold\n";
+ exit $ERRORS{'UNKNOWN'};
+}
+
+$cmd = "/usr/bin/aecho -c $count $host 2>&1 |";
+print "$cmd\n" if ($verbose);
+open CMD, $cmd;
+
+while (<CMD>) {
+ print $_ if ($verbose);
+ $line = $_;
+
+ # 5 packets sent, 5 packets received, 0% packet loss
+ # round-trip (ms) min/avg/max = 0/0/0
+
+ if (/received, ([0-9]+)% packet loss/) {
+ $loss = $1;
+ }
+ if (/min\/avg\/max = [0-9]+\/([0-9]+)\/[0-9]+/) {
+ $avg = $1;
+ }
+}
+
+sub print_help() {
+ print_revision( $PROGNAME, '$Revision$ ' );
+ print "Copyright (c) 2002 Stefan Beck\n";
+ print "\n";
+ print "Check if an atalkhost responds to an atalk echo using\n";
+ print " aecho -c <packets> <atalkhost>\n";
+ print "\n";
+ print_usage ();
+ print "\n";
+ print "-H, --hostname=HOST\n";
+ print " host to ping\n";
+ print "-w, --warning=THRESHOLD\n";
+ print " warning threshold pair\n";
+ print "-c, --critical=THRESHOLD\n";
+ print " critical threshold pair\n";
+ print "-p, --packets=INTEGER\n";
+ print " number of ICMP ECHO packets to send (Default: 5)\n";
+ print "\n";
+ print
+ "THRESHOLD is <rta>,<pl>% where <rta> is the round trip average
+travel\n";
+ print
+ "time (ms) which triggers a WARNING or CRITICAL state, and <pl>
+is the\n";
+ print "percentage of packet loss to trigger an alarm state.\n";
+ print "\n";
+
+ support();
+}
+
+sub print_usage () {
+ print "$PROGNAME -H atalkhost -w <wrta>,<wpl>% -c <crta>,<cpl>%\n";
+ print " [-p packets] [-t timeout] [-L]\n";
+ print "$PROGNAME [-h | --help]\n";
+ print "$PROGNAME [-V | --version]\n";
+}
+
+sub version () {
+ print_revision( $PROGNAME, '$Revision$ ' );
+ exit $ERRORS{'OK'};
+}
+
+sub help () {
+ print_help ();
+ exit $ERRORS{'OK'};
+}
+
+my $state = "OK";
+my $answer = undef;
+
+if ( defined $loss && defined $avg ) {
+ if ( $loss >= $critical_loss ) {
+ $state = "CRITICAL";
+ }
+ elsif ( $avg >= $critical_avg ) {
+ $state = "CRITICAL";
+ }
+ elsif ( $loss >= $warning_loss ) {
+ $state = "WARNING";
+ }
+ elsif ( $avg >= $warning_avg ) {
+ $state = "WARNING";
+ }
+ else {
+ $state = "OK";
+ }
+ $answer = "Appletalk PING $state - Packet loss = $loss%, RTA = $avg
+ms\n";
+}
+else {
+ $state = "UNKNOWN";
+ $answer = "UNKNOWN - $line";
+}
+print $answer;
+exit $ERRORS{$state};
+
+
+
+
+-------------------------------------------------------
+This sf.net email is sponsored by:ThinkGeek
+Welcome to geek heaven.
+http://thinkgeek.com/sf
+_______________________________________________
+Nagios-devel mailing list
+Nagios-devel@lists.sourceforge.net
+https://lists.sourceforge.net/lists/listinfo/nagios-devel