Hi all,

I'm maintaining mon for Debian distributions and ipvs.monitor was contributed 
to be included in Debian.


The monitor is not yet revised for me but I'll will send the fixed to the list 
if any is needed.


I'll include this monitor in nexw 0.99.2 release (the last 0.99.2, I hope) and 
I'm forwarding it to
be included in mon upstream code if feets.

Thanks in advance.


Thanks for your work in 'mon'.

Regards

-- 
_________________________________________________________________________
 Dario Minnucci (midget)
 Phone: (+34) 902021030 | Fax: (+34) 902024417 | Support: (+34) 807450000
 Email: [EMAIL PROTECTED] | URL: http://www.midworld.net/midget/
_________________________________________________________________________
 Key fingerprint = 6DDB 5487 7F6D 89D4 5D9C  33C7 D181 DD7A 6C42 8272
_________________________________________________________________________

#!/usr/bin/perl


# ipvs.alert - Linux Virtual Server alert for mon
#   Bring a realserver up or down, or remove the entire virtual server.
#
# Invocation:
#   To remove a realserver from a virtual service:
#     ipvs.alert -P <protocol> -V <virtual_server:port> -R <real_server:port>
#   To add a realserver to an existing virtual service:
#     ipvs.alert -u -P <protocol> -V <virtual_server:port> -R 
<real_server:port> -W <weight> -F <forwarding>
#   To remove a virtual service along with any associated realservers:
#     ipvs.alert -D -P <protocol> -V <virtual_server:port>
#   To create a virtual service with the given realserver:
#     ipvs.alert -u -B -P <protocol> -V <virtual_server:port> -S <scheduler> -R 
<real_server:port> -W <weight> -F <forwarding>
#
# Options:
#   -P protocol (tcp|udp)
#   -V virtual server
#   -R realserver
#   -W weight
#   -F forwarding type (nat|tun|dr)
#   -S scheduler (rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)
#   -D delete the entire virtual server
#   -B rebuild the virtual server
#
# Notes:
#   - -u is  added automatically  when    ipvs.alert  is  part  of  an
#   ``upalert''. You can leave it out or append a dozen, this does not
#   matter.
#   - You   can't   build  (-B) a   virtual service  without  giving a
#   realserver, but   you *can* add  a  realserver without  building a
#   virtual service.
#   - the comments are almost double the  volume of the script itself.
#   Good, bad or just plain ugly?
#   -  Since it  uses ipvsadm,  this  script (and  therefore Mon) must
#   unfortunately run as root :(


use Getopt::Std;

getopts ("uDBs:g:h:t:l:P:V:R:W:F:S:");

$ipvsadm = "/sbin/ipvsadm";
$virtual_service = "$opt_V";
$realserver = "-r $opt_R";
$scheduler = "-s $opt_S";
%proto = (
                        "tcp" => "-t",
                        "udp" => "-u",
                 );
%type = (
                 "nat" => "-m",
                 "tun" => "-i",
                 "dr"  => "-g",
                );

if ($opt_u) { # bring up the realserver
        if ($opt_B) { # build the virtual service first
                system("$ipvsadm -A $proto{$opt_P} $virtual_service 
$scheduler");
        }
        $weight = "-w $opt_W";
        system("$ipvsadm -a $proto{$opt_P} $virtual_service $realserver $weight 
$type{$opt_F}");
} elsif ($opt_D) { # tear down the entire virtual server
        system("$ipvsadm -D $proto{$opt_P} $virtual_service");
} else { # delete the realserver
        system("$ipvsadm -d $proto{$opt_P} $virtual_service $realserver");
};


# # ## ### ##### ######## ############# #####################
# CHANGELOG
# Mon Jul 12 14:12:49 MYT 2004
#   Initial [messy] version
#   Christopher DeMarco <[EMAIL PROTECTED]>
# Thu Jul 15 11:02:06 MYT 2004
#   Added -D to delete the entire virtual server
#   Bringing up a service also adds the virtual server
#   General code overhaul
#   Christopher DeMarco <[EMAIL PROTECTED]>
# Mon Jul 26 10:09:34 MYT 2004
#   Renamed "lvs" to "ipvs"
#   Christopher DeMarco <[EMAIL PROTECTED]>
# Wed Oct  1 18:34:27 CEST 2008
#   fixed inline documentation
#   fixed whitespace/tab
#   Richard Hartmann <[EMAIL PROTECTED]>


# # ## ### ##### ######## ############# #####################
#   Copyright (C) 2004, Christopher DeMarco
#   Copyright (C) 2008, Richard Hartmann
#
#   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

#!/usr/bin/perl


# ipvs.monitor - Linux Virtual Server monitor for mon
#   Check  whether  the  specified virtual  service   is defined, and,
#   optionally, whether it has any realservers defined.
#
# Invocation:
#   ipvs.monitor [options] -V <virtual_server:port> -P <protocol>
#
# Options:
#   -V virtual server
#   -P protocol (tcp|udp)
#   -z allows a virtual service to have zero realservers defined
#
# Notes:
#   - Since  it uses  ipvsadm, this  script  (and therefore  mon) must
#   unfortunately run as root :(
#   - ipvs.monitor returns 0 on success and 1 on failure


use Getopt::Std;

getopts ("zV:P:");

%proto = (
        "tcp" => "-t",
        "udp" => "-u",
);

$virtual_service = "$opt_V";

@ipvs = `/sbin/ipvsadm -l $proto{$opt_P} $virtual_service 2>&1`;

# allow a service with no realservers?
defined $opt_z ?
        ($n = 2)
        :
        ($n = 3);

# Check the output:
# ...two lines of headers
# ...one line of virtual service
# ...one line for each realserver
$#ipvs < $n ?
        exit 1
        :
        exit 0;


# # ## ### ##### ######## ############# #####################
# CHANGELOG
# Tue Jul 27 11:17:39 MYT 2004
#   Initial version
#   Christopher DeMarco <[EMAIL PROTECTED]>
# Tue Jul 27 14:14:08 MYT 2004
#   added -z switch
#   Christopher DeMarco <[EMAIL PROTECTED]>
# Wed Oct  1 18:34:27 CEST 2008
#   fixed inline documentation
#   fixed whitespace/tab
#   Richard Hartmann <[EMAIL PROTECTED]>


# # ## ### ##### ######## ############# #####################
#   Copyright (C) 2004, Christopher DeMarco
#   Copyright (C) 2008, Richard Hartmann
#
#   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

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
mon mailing list
mon@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/mon

Reply via email to