Jim,
  Thanks for working on mon....it has saved my butt a few times, and
keeps me looking good at the office. :)

  Anyway, here is a new alert for the contrib bin: aim.alert

Based off mail.alert, this alert will send the same information to an
AIM user who is logged in.  To use, simple place in your alert.d dir,
making sure it is executable by your mon user.  Make user you have the
perl modules AOL::TOC installed (perl -MCPAN -e "install AOL::TOC"),
then just use like this in your monrc file:

watch servers-prod-solaris
    service ping
    description ping servers in ADC.
    interval 1m
    monitor fping.monitor
    # Generic Alert Block
    period p1: wd {Sun-Sat}
    alert mail.alert [EMAIL PROTECTED]
    alert aim.alert
    upalert aim.alert
    upalert mail.alert [EMAIL PROTECTED]
    alert netpage.alert [EMAIL PROTECTED]
    upalert netpage.alert [EMAIL PROTECTED]
    alertevery 60m
    alertafter 2 30m

-- 
Don Harper, RHCE, MCSE                          email: [EMAIL PROTECTED]
Just a systems kinda guy...                      http://www.duckland.org

      Send me your tired, your poor... Oh, and a side of fries.

#!/usr/bin/perl
#

# aim.alert - AIM alert for mon
#
# The first line from STDIN is summary information
#
# Don Harper, [EMAIL PROTECTED]
#
# $Id: aim.alert,v 1.1.1.1 2002/11/02 17:19:10 duck Exp $
#
#    Copyright (C) 2002, Don Harper
#
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program; if not, write to the Free Software
#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#


use AOL::TOC;
use Getopt::Std;
use Text::Wrap;

$screen_name = "A SCREEN NAME HERE";
$password = "$screen_name's PASSWORD HERE";
$master = "WHO TO ALERT?";
$toc_server = "toc.oscar.aol.com";
$login_server = "login.oscar.aol.com";
$port = "9993";

getopts ("S:s:g:h:t:l:u");
$summary=<STDIN>;
chomp $summary;

$summary = $opt_S if (defined $opt_S);
$mailaddrs = join (',', @ARGV);
$ALERT = $opt_u ? "UPALERT" : "ALERT";
$t = localtime($opt_t);
($wday,$mon,$day,$tm) = split (/\s+/, $t);


# Create the TOC object
$toc = AOL::TOC::new($toc_server, $login_server, $port, 
                     $screen_name, $password);
# register callbacks
$toc->register_callback("SIGN_ON", \&client_signon);
$toc->register_callback("ERROR", \&client_error);

# Informs our master we are operational
sub client_signon
{
    $toc->add_buddy($screen_name);
    print "We are online and ready!\n";
    sleep 1;
    $toc->send_im($master, " Warning: $screen_name now operation!");
}

# connect to aim server
if (! ( $toc->connect() ) )
{
     abort();
}

$toc->dispatch();
sleep 1;
$str  = "Subject: $ALERT $opt_g/$opt_s: $summary ($wday $mon $day $tm)\n";
$str .= wrap ("", "", "Summary output        : $summary"), "\n";
$str .= "\nGroup                 : $opt_g\n";
$str .= "Service               : $opt_s\n";
$str .= "Time noticed          : $t\n";
$str .= "Secs until next alert : $opt_l\n";
$str .= wrap ("", "", "Members               : $opt_h"), "\n";
$str .= "\nDetailed text (if any) follows:\n";
$str .= "-------------------------------\n";
while (<STDIN>) { $str .= $_; }

print "sending: $str to $master\n";
$toc->send_im($master,$str);
sleep 1;
exit;

sub client_error
{
    my ($self, $code) = @_;
    
    print "ERROR: " . aim_errstr($code, $previous_target) . "\n";
}

sub aim_errstr() {
    my ($code, $target, %_error_name);

    ($code, $target) = @_;

    %_error_name = (
                    # AIM Errors
                    901   => "$target not currently available",
                    902   => "Warning of $target not currently available",
                    903   => 'A message has been dropped, you are exceeding the server speed limit',
                    #   * Chat Errors  *',
                    950   => 'Chat in $target is unavailable.',

                    #   * IM & Info Errors *',
                    960   => 'You are sending message too fast to $target',
                    961   => 'You missed an im from $target because it was too big.',
                    962   => 'You missed an im from $target because it was sent too fast.',

                    #   * Dir Errors *',
                    970   => 'Failure',
                    971   => 'Too many matches',
                    972   => 'Need more qualifiers',
                    973   => 'Dir service temporarily unavailable',
                    974   => 'Email lookup restricted',
                    975   => 'Keyword Ignored',
                    976   => 'No Keywords',
                    977   => 'Language not supported',
                    978   => 'Country not supported',
                    979   => 'Failure unknown $target',

                    #  * Auth errors *',
                    980   => 'Incorrect nickname or password.',
                    981   => 'The service is temporarily unavailable.',
                    982   => 'Your warning level is currently too high to sign on.',
                    983   => 'You have been connecting and disconnecting too fre quently.  Wait 10 minutes and try again.  If you continue to try, you will need to wait even longer.',
                    989   => 'An unknown signon error has occurred $target'
                    );

    # fatal signon errors, we should abort!
    if ($code eq '980' ||
        $code eq '981' ||
        $code eq '982' ||
        $code eq '983' ||
        $code eq '989')
        {
             print "Aborting...\n$_error_name{$code}\n";
             abort();
        }
    return $_error_name{$code};
}

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to