diff -ruN nagiosplug-save/contrib/check_maxchannels.pl nagiosplug/contrib/check_maxchannels.pl
--- nagiosplug-save/contrib/check_maxchannels.pl	2002-02-28 06:42:54.000000000 +0000
+++ nagiosplug/contrib/check_maxchannels.pl	2004-03-27 22:25:39.000000000 +0000
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!/usr/bin/perl -wT
 #
 # check_maxchannels.pl - nagios plugin 
 # 
@@ -24,30 +24,26 @@
 #
 # 11.01.2000 Version 1.0
 
+require 5.004;
 use strict;
+use lib utils.pm ;
+use Plugin;
+use Plugin::Parameter qw(:DEFAULT :snmp);
 
 use Net::SNMP;
-use Getopt::Long;
-&Getopt::Long::config('auto_abbrev');
 
+use vars qw($opt_H $opt_C $opt_p $opt_t $PROGNAME);
 
-my $status;
-my $TIMEOUT = 15;
+use utils qw(%ERRORS &usage);
 
-my %ERRORS = ('UNKNOWN' , '-1',
-              'OK' , '0',
-              'WARNING', '1',
-              'CRITICAL', '2');
+$p_opt->default(161);
+my $plugin = new Plugin(-revision => '$Revision: 1.1.1.1 $',
+			-copyright => "2000 Christoph Kron, 2004 Howard Wilkinson <howard\@cohtech.com>",
+			-shortcomment => "Perl Check maxchannels plugin for Nagios. Monitors ISDN lines and modems on Ascend MAX 2000/4000/6000/TNT",
+			-parameterlists => [ [ $H_opt, $C_opt, $p_opt, $t_opt ], $h_opts, $V_opts ]);
 
+$plugin->init();
 	
-my $state = "UNKNOWN";
-my $answer = "";
-my $snmpkey;
-my $snmpoid;
-my $key;
-my $community = "public";
-my $port = 161;
-my @snmpoids;
 # free channels
 my $snmpWanAvailableChannels = '1.3.6.1.4.1.529.4.23.0';
 # maximum channels
@@ -67,117 +63,61 @@
 my $snmpBusyLanModem = '1.3.6.1.4.1.529.15.9.0';
 # max modems
 my $snmpMdmNumber  = '1.3.6.1.2.1.38.1.1.0';
-my $hostname;
-my $session;
-my $error;
-my $response;
-my %wanStatus;
-
-
-my $WanAvailableChannels;
-my $WanSwitchedChannels;
-my $WanDisabledChannels;
-my $WanActiveChannels;
-my $WanNailedChannels;
-my $WanOutOfServiceChannels;
-my $EventCurrentActiveSessions;
-my $EventTotalNoModems;
-my $DeadLanModem;
-my $DisabledLanModem;
-my $SuspectLanModem;
-my $AvailLanModem;
-my $BusyLanModem;
-my $MdmNumber;
-
-
-sub usage {
-  printf "\nMissing arguments!\n";
-  printf "\n";
-  printf "Perl Check maxchannels plugin for Nagios\n";
-  printf "monitors ISDN lines and modems on Ascend MAX 2000/4000/6000/TNT\n";
-  printf "usage: \n";
-  printf "check_maxchannel.pl -c <READCOMMUNITY> -p <PORT> <HOSTNAME>\n";
-  printf "Copyright (C) 2000 Christoph Kron\n";
-  printf "check_maxchannels.pl comes with ABSOLUTELY NO WARRANTY\n";
-  printf "This programm is licensed under the terms of the ";
-  printf "GNU General Public License\n(check source code for details)\n";
-  printf "\n\n";
-  exit $ERRORS{"UNKNOWN"};
-}
-
-# Just in case of problems, let's not hang Nagios
-$SIG{'ALRM'} = sub {
-     print ("ERROR: No snmp response from $hostname (alarm)\n");
-     exit $ERRORS{"UNKNOWN"};
-};
-alarm($TIMEOUT);
-
-
-$status = GetOptions("community=s",\$community,
-                     "port=i",\$port);
-if ($status == 0)
-{
-        &usage;
-}
-  
-   #shift;
-   $hostname  = shift || &usage;
-
-
-
-push(@snmpoids,$snmpWanAvailableChannels);
-push(@snmpoids,$snmpWanSwitchedChannels);
-push(@snmpoids,$snmpWanDisabledChannels);
-push(@snmpoids,$snmpWanActiveChannels);
-push(@snmpoids,$snmpWanNailedChannels);
-push(@snmpoids,$snmpWanOutOfServiceChannels);
-
-push(@snmpoids,$snmpEventCurrentActiveSessions);
-
-push(@snmpoids,$snmpEventTotalNoModems);
-push(@snmpoids,$snmpDeadLanModem);
-push(@snmpoids,$snmpDisabledLanModem);
-push(@snmpoids,$snmpSuspectLanModem);
-push(@snmpoids,$snmpAvailLanModem);
-push(@snmpoids,$snmpBusyLanModem);
-push(@snmpoids,$snmpMdmNumber);
-
-   ($session, $error) = Net::SNMP->session(
-      -hostname  => $hostname,
-      -community => $community,
-      -port      => $port
-   );
-
-   if (!defined($session)) {
-      $state='UNKNOWN';
-      $answer=$error;
-      print ("$state: $answer");
-      exit $ERRORS{$state};
-   }
-
-   if (!defined($response = $session->get_request(@snmpoids))) {
-      $answer=$session->error;
-      $session->close;
-      $state = 'CRITICAL';
-      print ("$state: $answer,$community");
-      exit $ERRORS{$state};
-   }
-
-
-$WanAvailableChannels = $response->{$snmpWanAvailableChannels};
-$WanSwitchedChannels = $response->{$snmpWanSwitchedChannels};
-$WanDisabledChannels = $response->{$snmpWanDisabledChannels};
-$WanActiveChannels = $response->{$snmpWanActiveChannels};
-$WanNailedChannels = $response->{$snmpWanNailedChannels};
-$WanOutOfServiceChannels = $response->{$snmpWanOutOfServiceChannels};
-$EventCurrentActiveSessions = $response->{$snmpEventCurrentActiveSessions};
-$EventTotalNoModems = $response->{$snmpEventTotalNoModems};
-$DeadLanModem = $response->{$snmpDeadLanModem};
-$DisabledLanModem = $response->{$snmpDisabledLanModem};
-$SuspectLanModem = $response->{$snmpSuspectLanModem};
-$AvailLanModem = $response->{$snmpAvailLanModem};
-$BusyLanModem = $response->{$snmpBusyLanModem};
-$MdmNumber = $response->{$snmpMdmNumber};
+
+my @snmpoids = ( $snmpWanAvailableChannels,
+		 $snmpWanSwitchedChannels,
+		 $snmpWanDisabledChannels,
+		 $snmpWanActiveChannels,
+		 $snmpWanNailedChannels,
+		 $snmpWanOutOfServiceChannels,
+		 $snmpEventCurrentActiveSessions,
+		 $snmpEventTotalNoModems,
+		 $snmpDeadLanModem,
+		 $snmpDisabledLanModem,
+		 $snmpSuspectLanModem,
+		 $snmpAvailLanModem,
+		 $snmpBusyLanModem,
+		 $snmpMdmNumber);
+
+my $state = "UNKNOWN";
+my $answer = "";
+
+my ($session, $error) = Net::SNMP->session(-hostname  => $opt_H,
+					   -community => $opt_C,
+					   -port      => $opt_p,
+					   -timeout   => $opt_t
+					  );
+
+if (!defined($session)) {
+  $state='UNKNOWN';
+  $answer=$error;
+  print ("$PROGNAME $state: $answer");
+  exit $ERRORS{$state};
+}
+
+my $response = $session->get_request(@snmpoids);
+if (!defined $response) {
+  $answer=$session->error;
+  $session->close;
+  $state = 'CRITICAL';
+  print ("$PROGNAME $state: $answer,$opt_C");
+  exit $ERRORS{$state};
+}
+
+my $WanAvailableChannels = $response->{$snmpWanAvailableChannels};
+my $WanSwitchedChannels = $response->{$snmpWanSwitchedChannels};
+my $WanDisabledChannels = $response->{$snmpWanDisabledChannels};
+my $WanActiveChannels = $response->{$snmpWanActiveChannels};
+my $WanNailedChannels = $response->{$snmpWanNailedChannels};
+my $WanOutOfServiceChannels = $response->{$snmpWanOutOfServiceChannels};
+my $EventCurrentActiveSessions = $response->{$snmpEventCurrentActiveSessions};
+my $EventTotalNoModems = $response->{$snmpEventTotalNoModems};
+my $DeadLanModem = $response->{$snmpDeadLanModem};
+my $DisabledLanModem = $response->{$snmpDisabledLanModem};
+my $SuspectLanModem = $response->{$snmpSuspectLanModem};
+my $AvailLanModem = $response->{$snmpAvailLanModem};
+my $BusyLanModem = $response->{$snmpBusyLanModem};
+my $MdmNumber = $response->{$snmpMdmNumber};
 
 # less than 50% -> WARNING
 if ( 0 < $WanOutOfServiceChannels 
@@ -202,30 +142,29 @@
 
 
 $answer =  sprintf("active sessions: %d (%d), active modems: %d (%d)<BR>",
-		$EventCurrentActiveSessions,
-		$WanSwitchedChannels,
-		$BusyLanModem,
-		$MdmNumber);
+		   $EventCurrentActiveSessions,
+		   $WanSwitchedChannels,
+		   $BusyLanModem,
+		   $MdmNumber);
 		
 $answer .= sprintf("channels available: %d, disabled: %d",
-		$WanAvailableChannels,
-		$WanDisabledChannels);
+		   $WanAvailableChannels,
+		   $WanDisabledChannels);
 
 $answer .= sprintf(", out of service: %d, nailed: %d<BR>",
-		$WanOutOfServiceChannels,
-		$WanNailedChannels);
+		   $WanOutOfServiceChannels,
+		   $WanNailedChannels);
 
 $answer .= sprintf("modems avail.: %d, disabled: %d, suspect: %d, dead: %d<BR>",
-		$AvailLanModem,
-		$DisabledLanModem,
-		$SuspectLanModem,
-		$DeadLanModem);
+		   $AvailLanModem,
+		   $DisabledLanModem,
+		   $SuspectLanModem,
+		   $DeadLanModem);
 
 $answer .= sprintf("unserviced modem calls: %d (since startup)\n",
-		$EventTotalNoModems);
+		   $EventTotalNoModems);
 
 $session->close;
 
-print ("$state: $answer");
+print ("$PROGNAME $state: $answer");
 exit $ERRORS{$state};
-
