mirror of
https://github.com/monitoring-plugins/monitoring-plugins.git
synced 2026-07-15 11:52:41 -04:00
spring cleaning of contrib directory from andreas
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1192 f882894a-f735-0410-b71e-b25c423dba1c
This commit is contained in:
parent
9bab24cf95
commit
69e1b0fe39
10 changed files with 0 additions and 1752 deletions
|
|
@ -1,148 +0,0 @@
|
|||
#! /usr/bin/perl -wT
|
||||
|
||||
# (c)2001 Patrick Greenwell, Stealthgeeks, LLC. (patrick@stealthgeeks.net)
|
||||
# Licensed under the GNU GPL
|
||||
# http://www.gnu.org/licenses/gpl.html
|
||||
#
|
||||
# check_dl_size: Attempts to download a specified file via FTP and verify
|
||||
# it is a specified size.
|
||||
# Requires Net::FTP
|
||||
|
||||
# Version 1.0
|
||||
# Last Updated: 8/31/01
|
||||
|
||||
|
||||
BEGIN {
|
||||
if ($0 =~ m/^(.*?)[\/\\]([^\/\\]+)$/) {
|
||||
$runtimedir = $1;
|
||||
$PROGNAME = $2;
|
||||
}
|
||||
}
|
||||
|
||||
require 5.004;
|
||||
use strict;
|
||||
use Getopt::Long;
|
||||
use vars qw($opt_H $opt_f $opt_s $opt_t $verbose $PROGNAME);
|
||||
use lib $main::runtimedir;
|
||||
use utils qw($TIMEOUT %ERRORS &print_revision &usage &support &is_error);
|
||||
use Net::FTP;
|
||||
|
||||
sub help ();
|
||||
sub print_help ();
|
||||
sub print_usage ();
|
||||
sub version ();
|
||||
sub display_res($$);
|
||||
my ($ftpfile, $ftpdir, $filesize, $answer) = ();
|
||||
my $state = $ERRORS{'UNKNOWN'};
|
||||
|
||||
# Directory to place file. If your machine is not secure DO NOT USE /tmp.
|
||||
my $dir = "/usr/local/netsaint/etc/tmp";
|
||||
|
||||
# Username for login
|
||||
my $user = "anonymous";
|
||||
|
||||
# Password (PLEASE TAKE APPROPRIATE PRECAUTIONS TO SECURE THIS)
|
||||
my $pass = "guest\@example.com";
|
||||
|
||||
|
||||
delete @ENV{'PATH', 'IFS', 'CDPATH', 'ENV', 'BASH_ENV'};
|
||||
|
||||
Getopt::Long::Configure('bundling', 'no_ignore_case');
|
||||
GetOptions
|
||||
("V|version" => \&version,
|
||||
"h|help" => \&help,
|
||||
"v|verbose" => \$verbose,
|
||||
"H|hostname=s" => \$opt_H,
|
||||
"f|filename=s" => \$opt_f,
|
||||
"s|filesize=s" => \$opt_s,
|
||||
"t|timeout=s" => \$opt_t,
|
||||
);
|
||||
|
||||
($opt_H) || ($opt_H = shift) || usage("Host address or name not specified\n");
|
||||
my $host = $1
|
||||
if ($opt_H =~ m/^(([0-9]{1,3}\.){3}[0-9]{1,3}|(([a-z0-9]+(\-+[a-z0-9]+)*|\.))+[a-z])$/i);
|
||||
usage("Please provide a valid IP address or host name\n") unless ($host);
|
||||
|
||||
($opt_f) || ($opt_f = shift) || usage("File name not specified\n");
|
||||
|
||||
if ($opt_f =~ m/^(.*?)[\/\\]([^\/\\]+)$/) {
|
||||
$ftpdir = $1;
|
||||
$ftpfile = $2;
|
||||
}
|
||||
|
||||
($opt_s) || ($opt_s = shift) || usage("File size not specified\n");
|
||||
usage("File size must be numeric value") unless ($opt_s =~ m/^[0-9]+$/);
|
||||
|
||||
(($opt_t) && ($TIMEOUT = $opt_t)) || ($TIMEOUT = 120);
|
||||
usage("TIMEOUT must be numeric value") unless ($TIMEOUT =~ m/^[0-9]+$/);
|
||||
|
||||
# Don't hang if there are timeout issues
|
||||
$SIG{'ALRM'} = sub {
|
||||
print ("ERROR: No response from ftp server (alarm)\n");
|
||||
exit $ERRORS{'UNKNOWN'};
|
||||
};
|
||||
alarm($TIMEOUT);
|
||||
|
||||
# Make certain temporary directory exists
|
||||
|
||||
if ( ! -e "$dir" ) {
|
||||
display_res("Temporary directory $dir does not exist.\n", "CRITICAL");
|
||||
|
||||
}
|
||||
|
||||
# Remove existing file if any
|
||||
|
||||
if ( -e "$dir/$ftpfile") {
|
||||
unlink "$dir/$ftpfile" or
|
||||
display_res("Can't remove existing file $dir/$ftpfile.\n", "CRITICAL");
|
||||
}
|
||||
|
||||
# Snarf file
|
||||
|
||||
my $ftp = Net::FTP->new("$host", Passive => 1, Timeout => $TIMEOUT) or
|
||||
display_res("Can't connect to $host.\n", "CRITICAL");
|
||||
$ftp->login("$user","$pass") or
|
||||
display_res("Login to $host failed", "CRITICAL");
|
||||
$ftp->cwd("$ftpdir") or
|
||||
display_res("Can't change to directory $ftpdir.\n", "CRITICAL");
|
||||
$ftp->get($ftpfile, "$dir/$ftpfile") or
|
||||
display_res("Can't retrieve file $ftpfile.\n", "CRITICAL");
|
||||
$ftp->quit;
|
||||
|
||||
# If file exists and is correct size we are happy.
|
||||
|
||||
if (( -e "$dir/$ftpfile" ) && (($filesize = -s "/tmp/$ftpfile") eq $opt_s)) {
|
||||
display_res("File $ftpfile size OK: $filesize bytes.\n", "OK");
|
||||
} else {
|
||||
# Otherwise we are not happy.
|
||||
display_res("File $ftpfile size incorrect: $filesize bytes", "CRITICAL");
|
||||
}
|
||||
|
||||
exit;
|
||||
|
||||
sub print_usage () {
|
||||
print "Usage: $PROGNAME -H <host> -f <filename> -s <file size in bytes> -t <timeout> \n";
|
||||
}
|
||||
|
||||
sub print_help () {
|
||||
print_revision($PROGNAME,'$ Revision: 1.0 $ ');
|
||||
print "Copyright (c) 2001 Patrick Greenwell, Stealthgeeks, LLC.\n\n";
|
||||
print_usage();
|
||||
support();
|
||||
}
|
||||
|
||||
sub version () {
|
||||
print_revision($PROGNAME,'$ Revision: 1.0 $ ');
|
||||
exit $ERRORS{'OK'};
|
||||
}
|
||||
|
||||
sub help () {
|
||||
print_help();
|
||||
exit $ERRORS{'OK'};
|
||||
}
|
||||
|
||||
sub display_res ($$) {
|
||||
my ($answer, $state) = @_;
|
||||
print $answer;
|
||||
exit $ERRORS{$state};
|
||||
}
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
#!/usr/bin/perl -w
|
||||
## Written 12/5/00 Jeremy Hanmer
|
||||
# $Id$
|
||||
|
||||
use strict;
|
||||
use Net::FTP;
|
||||
use Getopt::Std;
|
||||
|
||||
use vars qw($opt_H $opt_u $opt_p $opt_f);
|
||||
getopts("H:u:p:f:");
|
||||
|
||||
my $host = $opt_H ||
|
||||
die "usage: check_ftp.pl -h host [<-u user> <-p pass> <-f file>]\n";
|
||||
|
||||
my $username = $opt_u || 'anonymous';
|
||||
my $pass = $opt_p || "$ENV{'LOGNAME'}\@$ENV{'HOSTNAME'}" ;
|
||||
|
||||
my $file = $opt_f;
|
||||
|
||||
my $status = 0;
|
||||
my $problem;
|
||||
my $output = "ftp ok";
|
||||
|
||||
my $ftp = Net::FTP->new("$host") ||
|
||||
&crit("connect");
|
||||
|
||||
$ftp->login("$username", "$pass") ||
|
||||
&crit("login");
|
||||
|
||||
$ftp->get($file) ||
|
||||
&crit("get") if $file;
|
||||
|
||||
sub crit()
|
||||
{
|
||||
$problem = $_[0];
|
||||
$status = 2;
|
||||
if ( $problem eq 'connect' ) {
|
||||
$output = "can't connect";
|
||||
} elsif ( $problem eq 'login' ) {
|
||||
$output = "can't log in";
|
||||
} elsif ( $problem eq 'get' ) {
|
||||
$output = "cant get $file";
|
||||
}
|
||||
}
|
||||
|
||||
print "$output\n";
|
||||
exit $status;
|
||||
|
||||
|
|
@ -1,351 +0,0 @@
|
|||
/*=================================
|
||||
* check_logins - Nagios plugin
|
||||
* Copyright (C) 2003 Dag Robøle
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* Authors email: drobole@broadpark.no
|
||||
*/
|
||||
//=================================
|
||||
#include <sys/types.h>
|
||||
#include <signal.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "config.h"
|
||||
#include "common.h"
|
||||
#include "utils.h"
|
||||
#include "popen.h"
|
||||
//=================================
|
||||
#define REVISION "$Revision$"
|
||||
#define COPYRIGHT "2003"
|
||||
#define AUTHOR "Dag Robole"
|
||||
#define EMAIL "drobole@broadpark.no"
|
||||
#define SUMMARY "Check for multiple user logins"
|
||||
|
||||
#define check(func, errmsg) { if((func) == -1) die(STATE_UNKNOWN, errmsg); }
|
||||
#define checkz(func, errmsg) { if(!(func)) die(STATE_UNKNOWN, errmsg); }
|
||||
//=================================
|
||||
typedef struct USERNODE_TYP {
|
||||
char *name;
|
||||
char *host;
|
||||
struct USERNODE_TYP* next;
|
||||
} USERNODE;
|
||||
//=================================
|
||||
char *progname = NULL;
|
||||
USERNODE *userlist = NULL, *adminlist = NULL;
|
||||
int warning_limit = 0, critical_limit = 0;
|
||||
|
||||
void print_usage();
|
||||
void print_help();
|
||||
void process_arguments(int argc, char* *argv);
|
||||
void parse_wholine(const char *line, char *name, char *host);
|
||||
void node_create(USERNODE* *node, const char *name, const char *host);
|
||||
void node_free(USERNODE* *node);
|
||||
USERNODE* list_insert_sort_uniq(USERNODE* *list, USERNODE* *node);
|
||||
void list_free(USERNODE* *list);
|
||||
void cleanup();
|
||||
//=================================
|
||||
int main(int argc, char* *argv)
|
||||
{
|
||||
FILE *who;
|
||||
USERNODE *newnode, *nptra, *nptrb;
|
||||
char buffer[BUFSIZ], username[BUFSIZ], hostname[BUFSIZ], *cptra, *cptrb;
|
||||
char max_login_name[BUFSIZ], currname[BUFSIZ];
|
||||
int max_login_count = 0, counter = 0, skip;
|
||||
void (*old_sig_alrm)();
|
||||
|
||||
progname = argv[0];
|
||||
if(atexit(cleanup))
|
||||
die(STATE_UNKNOWN, "atexit failed\n");
|
||||
|
||||
if((old_sig_alrm = signal((int)SIGALRM, timeout_alarm_handler)) == SIG_ERR)
|
||||
die(STATE_UNKNOWN, "signal failed\n");
|
||||
alarm(timeout_interval);
|
||||
|
||||
process_arguments(argc, argv);
|
||||
|
||||
checkz(who = spopen(PATH_TO_WHO), "spopen failed\n");
|
||||
|
||||
while(fgets(buffer, sizeof(buffer), who) != NULL) {
|
||||
parse_wholine(buffer, username, hostname);
|
||||
skip = 0;
|
||||
nptra = adminlist;
|
||||
|
||||
while(nptra != NULL) {
|
||||
if(!strcmp(nptra->name, username)) {
|
||||
skip = 1;
|
||||
break;
|
||||
}
|
||||
nptra = nptra->next;
|
||||
}
|
||||
if(!skip) {
|
||||
node_create(&newnode, username, hostname);
|
||||
if(!list_insert_sort_uniq(&userlist, &newnode))
|
||||
node_free(&newnode);
|
||||
}
|
||||
}
|
||||
|
||||
check(spclose(who), "spclose failed\n");
|
||||
|
||||
if(userlist != NULL) {
|
||||
nptra = userlist;
|
||||
strcpy(currname, nptra->name);
|
||||
strcpy(max_login_name, nptra->name);
|
||||
max_login_count = 1;
|
||||
while(nptra != NULL) {
|
||||
if(!strcmp(currname, nptra->name))
|
||||
++counter;
|
||||
else {
|
||||
if(counter > max_login_count) {
|
||||
max_login_count = counter;
|
||||
strcpy(max_login_name, currname);
|
||||
}
|
||||
strcpy(currname, nptra->name);
|
||||
counter = 1;
|
||||
}
|
||||
nptra = nptra->next;
|
||||
}
|
||||
|
||||
if(counter > max_login_count) {
|
||||
max_login_count = counter;
|
||||
strcpy(max_login_name, currname);
|
||||
}
|
||||
}
|
||||
|
||||
if(signal((int)SIGALRM, old_sig_alrm) == SIG_ERR)
|
||||
die(STATE_UNKNOWN, "signal failed\n");
|
||||
|
||||
if(max_login_count) {
|
||||
if(critical_limit && max_login_count >= critical_limit) {
|
||||
printf("CRITICAL - User %s has logged in from %d different hosts\n", max_login_name, max_login_count);
|
||||
return STATE_CRITICAL;
|
||||
}
|
||||
else if(warning_limit && max_login_count >= warning_limit) {
|
||||
printf("WARNING - User %s has logged in from %d different hosts\n", max_login_name, max_login_count);
|
||||
return STATE_WARNING;
|
||||
}
|
||||
}
|
||||
|
||||
printf("OK - No users has exceeded the login limits\n");
|
||||
return STATE_OK;
|
||||
}
|
||||
//=================================
|
||||
void print_usage()
|
||||
{
|
||||
fprintf(stderr, "Usage: %s [ -hV ] [ -w limit ] [ -c limit ] [ -u username1, ... ,usernameN ]\n", progname);
|
||||
}
|
||||
//=================================
|
||||
void print_help()
|
||||
{
|
||||
print_revision(progname, REVISION);
|
||||
printf("Copyright (c) %s %s <%s>\n\n%s\n\n", COPYRIGHT, AUTHOR, EMAIL, SUMMARY);
|
||||
print_usage();
|
||||
printf("\nDescription:\n"
|
||||
"\tThis plugin supports the w (warning) and c (critical) options indicating the upper limits\n"
|
||||
"\tof logins allowed before a warning is given.\n"
|
||||
"\tThe output from %s is the username and number of login sessions for the user\n"
|
||||
"\twho has the most login sessions (from different hosts) running at a given point in time.\n"
|
||||
"\tThe u (users) option takes a comma separated list of usernames that will be ignored\n"
|
||||
"\twhile scannig users.\n"
|
||||
"\nOptions:\n"
|
||||
"\t-h | --help\n\t\tShow this help message and exit\n"
|
||||
"\t-V | --version\n\t\tShow version description\n"
|
||||
"\t-w | --warning=INTEGER\n\t\tSet warning limit for logins (minimum value is 2)\n"
|
||||
"\t-c | --critical=INTEGER\n\t\tSet critical limit for logins (minimum value is 2)\n"
|
||||
"\t-u | --users=STRING\n\t\tSet usernames to be ignored\n"
|
||||
"\nExamples:\n\t%s -w 3 -c 5\n"
|
||||
"\t%s -w 3 -c 5 -u root,guest,jcarmack\n\n", progname, progname, progname);
|
||||
}
|
||||
//=================================
|
||||
void process_arguments(int argc, char* *argv)
|
||||
{
|
||||
USERNODE *newnode;
|
||||
int optch;
|
||||
char buffer[BUFSIZ], *cptra;
|
||||
static struct option long_opts[] = {
|
||||
{"help", no_argument, 0, 'h'},
|
||||
{"version", no_argument, 0, 'V'},
|
||||
{"warning", required_argument, 0, 'w'},
|
||||
{"critical", required_argument, 0, 'c'},
|
||||
{"users", required_argument, 0, 'u'},
|
||||
{0, 0, 0, 0},
|
||||
};
|
||||
|
||||
while((optch = getopt_long(argc, argv, "hVw:c:u:", long_opts, NULL)) != -1) {
|
||||
switch(optch) {
|
||||
case 'h':
|
||||
print_help();
|
||||
exit(STATE_OK);
|
||||
break;
|
||||
case 'V':
|
||||
print_revision(progname, REVISION);
|
||||
exit(STATE_OK);
|
||||
break;
|
||||
case 'w':
|
||||
if(!is_numeric(optarg)) {
|
||||
print_usage();
|
||||
die(STATE_UNKNOWN, "invalid options\n");
|
||||
}
|
||||
warning_limit = atoi(optarg) > 2 ? atoi(optarg) : 2;
|
||||
break;
|
||||
case 'c':
|
||||
if(!is_numeric(optarg)) {
|
||||
print_usage();
|
||||
die(STATE_UNKNOWN, "invalid options\n");
|
||||
}
|
||||
critical_limit = atoi(optarg) > 2 ? atoi(optarg) : 2;
|
||||
break;
|
||||
case 'u':
|
||||
strcpy(buffer, optarg);
|
||||
cptra = strtok(buffer, ",");
|
||||
while(cptra != NULL) {
|
||||
node_create(&newnode, cptra, "(adminhost)");
|
||||
list_insert_sort_uniq(&adminlist, &newnode);
|
||||
cptra = strtok(NULL, ",");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
print_usage();
|
||||
exit(STATE_UNKNOWN);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(argc > optind) {
|
||||
print_usage();
|
||||
die(STATE_UNKNOWN, "invalid options\n");
|
||||
}
|
||||
|
||||
if(!warning_limit && !critical_limit) {
|
||||
print_usage();
|
||||
die(STATE_UNKNOWN, "you must provide a limit for this plugin\n");
|
||||
}
|
||||
|
||||
if(critical_limit && warning_limit > critical_limit) {
|
||||
print_usage();
|
||||
die(STATE_UNKNOWN, "warning limit must be less or equal critical limit\n");
|
||||
}
|
||||
}
|
||||
//=================================
|
||||
void parse_wholine(const char *line, char *name, char *host)
|
||||
{
|
||||
char buffer[BUFSIZ], *cptra, *cptrb, *display;
|
||||
strcpy(buffer, line);
|
||||
|
||||
cptra = buffer;
|
||||
checkz(cptrb = (char*)strchr(buffer, ' '), "strchr failed\n");
|
||||
strncpy(name, cptra, cptrb-cptra);
|
||||
name[cptrb-cptra] = '\0';
|
||||
|
||||
if((cptra = strchr(buffer, '(')) != NULL) // hostname found in source arg...
|
||||
{
|
||||
if(cptra[1] == ':') // local host
|
||||
strcpy(host, "(localhost)");
|
||||
else // extern host
|
||||
{
|
||||
checkz(cptrb = strchr(cptra, ')'), "strchr failed\n");
|
||||
cptrb++;
|
||||
strncpy(host, cptra, cptrb-cptra);
|
||||
host[cptrb-cptra] = '\0';
|
||||
}
|
||||
}
|
||||
else // no hostname in source arg, look in line arg...
|
||||
{
|
||||
checkz(cptra = strtok(buffer, " \t\r\n"), "strtok failed\n");
|
||||
checkz(cptra = strtok(NULL, " \t\r\n"), "strtok failed\n");
|
||||
if(cptra[0] == ':') // local host
|
||||
strcpy(host, "(localhost)");
|
||||
else // extern host
|
||||
sprintf(host, "(%s)", cptra);
|
||||
}
|
||||
|
||||
if((cptra = strchr(host, ':')) != NULL) // remove display if any...
|
||||
strcpy(cptra, ")");
|
||||
}
|
||||
//=================================
|
||||
void node_create(USERNODE* *node, const char *name, const char *host)
|
||||
{
|
||||
checkz(*node = (USERNODE*)malloc(sizeof(USERNODE)), "malloc failed\n");
|
||||
checkz((*node)->name = (char*)malloc(strlen(name)+1), "malloc failed\n");
|
||||
checkz((*node)->host = (char*)malloc(strlen(host)+1), "malloc failed\n");
|
||||
(*node)->next = NULL;
|
||||
strcpy((*node)->name, name);
|
||||
strcpy((*node)->host, host);
|
||||
}
|
||||
//=================================
|
||||
void node_free(USERNODE* *node)
|
||||
{
|
||||
free((*node)->name);
|
||||
free((*node)->host);
|
||||
free(*node);
|
||||
*node = NULL;
|
||||
}
|
||||
//=================================
|
||||
USERNODE* list_insert_sort_uniq(USERNODE* *list, USERNODE* *node)
|
||||
{
|
||||
char n1[BUFSIZ], n2[BUFSIZ];
|
||||
USERNODE *last_nptr = NULL, *nptr = *list;
|
||||
|
||||
if(*list == NULL)
|
||||
return(*list = *node);
|
||||
else {
|
||||
sprintf(n1, "%s %s", (*node)->name, (*node)->host);
|
||||
while(nptr != NULL) {
|
||||
sprintf(n2, "%s %s", nptr->name, nptr->host);
|
||||
if(!strcmp(n1, n2))
|
||||
return NULL;
|
||||
else if(strcmp(n1, n2) < 0) {
|
||||
if(last_nptr) {
|
||||
last_nptr->next = *node;
|
||||
(*node)->next = nptr;
|
||||
}
|
||||
else {
|
||||
(*node)->next = *list;
|
||||
*list = *node;
|
||||
}
|
||||
break;
|
||||
}
|
||||
else {
|
||||
last_nptr = nptr;
|
||||
nptr = nptr->next;
|
||||
}
|
||||
}
|
||||
if(nptr == NULL)
|
||||
last_nptr->next = *node;
|
||||
}
|
||||
return *node;
|
||||
}
|
||||
//=================================
|
||||
void list_free(USERNODE* *list)
|
||||
{
|
||||
USERNODE *doe, *nptr = *list;
|
||||
while(nptr != NULL) {
|
||||
doe = nptr;
|
||||
nptr = nptr->next;
|
||||
node_free(&doe);
|
||||
}
|
||||
*list = NULL;
|
||||
}
|
||||
//=================================
|
||||
void cleanup()
|
||||
{
|
||||
list_free(&userlist);
|
||||
list_free(&adminlist);
|
||||
}
|
||||
//=================================
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
/*****************************************************************
|
||||
*
|
||||
* Program: check_mysql.c
|
||||
* License: GPL
|
||||
*
|
||||
* Written by Tim Weippert
|
||||
* (based on plugins by Ethan Galstad and MySQL example code)
|
||||
*
|
||||
* Command line: check_mysql <host> [user] [passwd]
|
||||
* <host> can be the FQDN or the IP-Adress
|
||||
* [user] and [passwd] are optional
|
||||
*
|
||||
* Description:
|
||||
*
|
||||
* This plugin attempts to connect to an MySQL Server
|
||||
* with the optional specified parameters user and passwd.
|
||||
* Normaly the host and a user HAVE to assigned.
|
||||
*
|
||||
* The plugin returns
|
||||
* STATE_OK and the Version Number of the Server when all is fine
|
||||
* STATE_CRITICAL if the Connection can't be esablished
|
||||
* STATE_WARNING if the connection was established but the
|
||||
* program can't get the Versoin Number
|
||||
* STATE_UNKNOWN if to many parameters are given
|
||||
*
|
||||
* Copyright (c) 1999 by Tim Weippert
|
||||
*
|
||||
* Changes:
|
||||
* 16.12.1999: Changed the return codes from numbers to statements
|
||||
*
|
||||
*******************************************************************/
|
||||
|
||||
#include "config.h"
|
||||
#include "common.h"
|
||||
#include "mysql.h"
|
||||
|
||||
MYSQL mysql;
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
uint i = 0;
|
||||
char *host;
|
||||
char *user;
|
||||
char *passwd;
|
||||
|
||||
char *status;
|
||||
char *version;
|
||||
|
||||
if ( argc > 4 ) {
|
||||
printf("Too many Arguments supplied - %i .\n", argc);
|
||||
printf("Usage: %s <host> [user] [passwd]\n", argv[0]);
|
||||
return STATE_UNKNOWN;
|
||||
}
|
||||
|
||||
(host = argv[1]) || (host = NULL);
|
||||
(user = argv[2]) || (user = NULL);
|
||||
(passwd = argv[3]) || (passwd = NULL);
|
||||
|
||||
if (!(mysql_connect(&mysql,host,user,passwd))) {
|
||||
printf("Can't connect to Mysql on Host: %s\n", host);
|
||||
return STATE_CRITICAL;
|
||||
}
|
||||
|
||||
if ( !(version = mysql_get_server_info(&mysql)) ) {
|
||||
printf("Connect OK, but can't get Serverinfo ... something wrong !\n");
|
||||
return STATE_WARNING;
|
||||
}
|
||||
|
||||
printf("Mysql ok - Running Version: %s\n", version);
|
||||
|
||||
mysql_close(&mysql);
|
||||
return STATE_OK;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1,73 +0,0 @@
|
|||
#!/nyet/bin/perl
|
||||
#
|
||||
# (c)1999 Mitch Wright, NetLine Corporation
|
||||
# Read the GNU copyright stuff for all the legalese
|
||||
#
|
||||
# Check to see that our MySQL server(s) are up and running.
|
||||
# This plugin requires that mysqladmin(1) is installed on the system.
|
||||
# Since it is part of the MySQL distribution, that should be a problem.
|
||||
#
|
||||
# If no parameters are giving, a usage statement is output.
|
||||
#
|
||||
# Exit 0 on success, providing some informational output
|
||||
# Exit 2 on failure, provide what we can...
|
||||
#
|
||||
|
||||
require 5.004;
|
||||
|
||||
sub usage;
|
||||
|
||||
my $TIMEOUT = 15;
|
||||
my $MYSQLADMIN = "/usr/local/bin/mysqladmin";
|
||||
|
||||
my %ERRORS = ('UNKNOWN' , '-1',
|
||||
'OK' , '0',
|
||||
'WARNING', '1',
|
||||
'CRITICAL', '2');
|
||||
|
||||
my $host = shift || &usage(%ERRORS);
|
||||
my $user = shift || &usage(%ERRORS);
|
||||
my $pass = shift || "";
|
||||
my $warn = shift || 60;
|
||||
my $crit = shift || 100;
|
||||
|
||||
my $state = "OK";
|
||||
|
||||
# Just in case of problems, let's not hang Nagios
|
||||
$SIG{'ALRM'} = sub {
|
||||
print ("ERROR: No response from MySQL server (alarm)\n");
|
||||
exit $ERRORS{"UNKNOWN"};
|
||||
};
|
||||
alarm($TIMEOUT);
|
||||
|
||||
open (OUTPUT,
|
||||
"$MYSQLADMIN -h $host -u $user --password=\"$pass\" version 2>&1
|
||||
|");
|
||||
|
||||
while (<OUTPUT>) {
|
||||
if (/failed/) { $state="CRITICAL"; s/.*://; $status=$_; last; }
|
||||
next if /^\s*$/;
|
||||
if (/^Server version\s+(\d+.*)/) { $version = $1; next; }
|
||||
if (/^Uptime:\s+(\d.*)/) { $uptime = $1; next; }
|
||||
if (/^Threads:\s+(\d+)\s+/) { $threads = $1; next; }
|
||||
}
|
||||
|
||||
$status = "Version $version -- $threads Threads <br>Uptime $uptime" if
|
||||
$state ne "CRITICAL";
|
||||
|
||||
if ($threads >= $warn) { $state = "WARNING"; }
|
||||
if ($threads >= $crit) { $state = "CRITICAL"; }
|
||||
|
||||
print $status;
|
||||
exit $ERRORS{$state};
|
||||
|
||||
sub usage {
|
||||
print "Required arguments not given!\n\n";
|
||||
print "MySQL status checker plugin for Nagios, V1.01\n";
|
||||
print "Copyright (c) 1999-2000 Mitch Wright \n\n";
|
||||
print "Usage: check_mysql.pl <host> <user> [<pass> [<warn>
|
||||
[<crit>]]]\n\n"; print " <pass> = password to use for <user> at
|
||||
<host>\n"; print " <warn> = number of threads to warn us
|
||||
about\n"; print " <crit> = number of threads to scream at us
|
||||
about\n"; exit $ERRORS{"UNKNOWN"};
|
||||
}
|
||||
|
|
@ -1,174 +0,0 @@
|
|||
#!/usr/bin/perl -w
|
||||
#
|
||||
# check_mysqlslave.pl - nagios plugin
|
||||
#
|
||||
#
|
||||
# Copyright 2002 Mario Witte
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# Credits:
|
||||
# - Thanks to Christoph Kron <ck@zet.net> for check_ifstatus.pl
|
||||
# I used check_ifstatus.pl as a layout when writing this
|
||||
#
|
||||
# Report bugs to: chengfu@users.sourceforge.net
|
||||
#
|
||||
# 20.09.2002 Version 0.1
|
||||
|
||||
|
||||
use strict;
|
||||
use lib "/usr/local/nagios/libexec";
|
||||
use utils qw($TIMEOUT %ERRORS &print_revision &support);
|
||||
|
||||
use DBI;
|
||||
use DBD::mysql;
|
||||
use Getopt::Long;
|
||||
Getopt::Long::Configure('bundling');
|
||||
|
||||
# Predeclare some variables
|
||||
my $PROGNAME = 'check_mysqlslave';
|
||||
my $REVISION = '0.1';
|
||||
my $status;
|
||||
my $state = 'UNKNOWN';
|
||||
my $opt_V;
|
||||
my $opt_h;
|
||||
my $port = 3306;
|
||||
my $hostname;
|
||||
my $user = 'root';
|
||||
my $pass = '';
|
||||
my $driver;
|
||||
my $dbh;
|
||||
my $query;
|
||||
my $result;
|
||||
my $data;
|
||||
|
||||
# Just in case of problems, let's not hang Nagios
|
||||
$SIG{'ALRM'} = sub {
|
||||
print ("ERROR: No response from $hostname (alarm timeout)\n");
|
||||
exit $ERRORS{"UNKNOWN"};
|
||||
};
|
||||
alarm($TIMEOUT);
|
||||
|
||||
$status = GetOptions(
|
||||
"V" => \$opt_V, "version" => \$opt_V,
|
||||
"h" => \$opt_h, "help" => \$opt_h,
|
||||
"p=i" => \$port, "port=i" => \$port,
|
||||
"H=s" => \$hostname, "hostname=s" => \$hostname,
|
||||
"u=s" => \$user, "user=s" => \$user,
|
||||
"P=s" => \$pass, "pass=s" => \$pass,
|
||||
);
|
||||
|
||||
|
||||
if ($status == 0) {
|
||||
print_help() ;
|
||||
exit $ERRORS{'OK'};
|
||||
}
|
||||
|
||||
if ($opt_V) {
|
||||
print_revision($PROGNAME,'$Revision$REVISION .' $ ');
|
||||
exit $ERRORS{'OK'};
|
||||
}
|
||||
|
||||
if ($opt_h) {
|
||||
print_help();
|
||||
exit $ERRORS{'OK'};
|
||||
}
|
||||
|
||||
if (! utils::is_hostname($hostname)){
|
||||
usage();
|
||||
exit $ERRORS{"UNKNOWN"};
|
||||
}
|
||||
|
||||
|
||||
$driver = 'DBI:mysql::'. $hostname;
|
||||
|
||||
eval {
|
||||
$dbh = DBI->connect($driver, $user, $pass, { RaiseError => 1, PrintError => 0});
|
||||
};
|
||||
if ($@) {
|
||||
$status = $@;
|
||||
if ($status =~ /^.*failed:\ (.+)\ at\ $0/i) { $status = $1; }
|
||||
$state='CRITICAL';
|
||||
print $state .': Connect failed: '."$status\n";
|
||||
exit ($ERRORS{$state});
|
||||
}
|
||||
|
||||
eval {
|
||||
$query = 'SHOW SLAVE STATUS';
|
||||
$result = $dbh->prepare($query);
|
||||
$result->execute;
|
||||
$data = $result->fetchrow_hashref();
|
||||
$result->finish();
|
||||
$dbh->disconnect();
|
||||
};
|
||||
if ($@) {
|
||||
$status = $@;
|
||||
$status =~ s/\n/ /g;
|
||||
if ($status =~ /^DB[ID].*(failed|prepare):\ (.+)\ at\ $0/i) { $status = $2; }
|
||||
$state = 'CRITICAL';
|
||||
print $state .': Couldn\'t check slave: '."$status\n";
|
||||
exit($ERRORS{$state});
|
||||
}
|
||||
|
||||
if ($data->{'Slave_Running'} eq 'Yes') {
|
||||
$status = 'Replicating from '. $data->{'Master_Host'};
|
||||
$state = 'OK';
|
||||
print $state .': '. $status ."\n";
|
||||
exit($ERRORS{$state});
|
||||
} elsif ($data->{'Slave_Running'} eq 'No') {
|
||||
if (length($data->{'Last_error'}) > 0) {
|
||||
$status = 'Slave stopped with error message';
|
||||
$state = 'CRITICAL';
|
||||
print $state .': '. $status ."\n";
|
||||
exit($ERRORS{$state});
|
||||
} else {
|
||||
$status = 'Slave stopped without errors';
|
||||
$state = 'WARNING';
|
||||
print $state .': '. $status ."\n";
|
||||
exit($ERRORS{$state});
|
||||
}
|
||||
} else {
|
||||
$status = 'Unknown slave status: (Running: '. $data->{'Slave_Running'} .')';
|
||||
$state = 'UNKNOWN';
|
||||
print $state .': '. $status ."\n";
|
||||
exit($ERRORS{$state});
|
||||
}
|
||||
|
||||
sub usage {
|
||||
printf "\nMissing arguments!\n";
|
||||
printf "\n";
|
||||
printf "check_mysqlslave -H <hostname> [-p <port> -u <username> -P <password>]\n";
|
||||
printf "Copyright 2002 Mario Witte\n";
|
||||
printf "\n\n";
|
||||
support();
|
||||
exit $ERRORS{"UNKNOWN"};
|
||||
}
|
||||
|
||||
sub print_help {
|
||||
printf "check_mysqlslave plugin for Nagios checks \n";
|
||||
printf "if the replication on a backup mysql-server\n";
|
||||
printf "is up and running\n";
|
||||
printf "\nUsage:\n";
|
||||
printf " -H (--hostname) Hostname to query\n";
|
||||
printf " -p (--port) mysql port (default: 3306)\n";
|
||||
printf " -u (--user) username for accessing mysql host\n";
|
||||
printf " (default: root)\n";
|
||||
printf " -P (--pass) password for accessing mysql host\n";
|
||||
printf " (default: '')\n";
|
||||
printf " -V (--version) Plugin version\n";
|
||||
printf " -h (--help) usage help \n\n";
|
||||
print_revision($PROGNAME, '$Revision$REVISION .' $');
|
||||
|
||||
}
|
||||
|
|
@ -1,188 +0,0 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# check_nwstat.pl: Nagios plugin that uses Jim Drews' nwstat.pl for
|
||||
# MRTG instead of emulating it. For use particularly with Cliff
|
||||
# Woolley's mrtgext.pl Unix companion to Drews' MRTGEXT.NLM, where
|
||||
# mrtgext.pl can contain custom commands that check_nwstat won't recognize,
|
||||
# though this also does its best to perfectly emulate the C version
|
||||
# of check_nwstat.
|
||||
#
|
||||
|
||||
|
||||
######################################################################
|
||||
# Configuration
|
||||
######################################################################
|
||||
|
||||
$nwstatcmd = "/apps/mrtg/helpers/nwstat.pl";
|
||||
|
||||
use Getopt::Long;
|
||||
|
||||
$::host = shift || &usage(%ERROR);
|
||||
$::opt_v = undef;
|
||||
$::opt_wv = undef;
|
||||
$::opt_cv = undef;
|
||||
$::opt_to = 10;
|
||||
$::opt_url = undef;
|
||||
|
||||
GetOptions (qw(v=s wv=i cv=i to=i url=s)) || &usage(%ERROR);
|
||||
|
||||
my $cmd1 = "";
|
||||
my $cmd2 = "ZERO";
|
||||
my $backward = 0;
|
||||
my $desc = "";
|
||||
my $okstr = "OK";
|
||||
my $probstr = "Problem";
|
||||
my $result = "";
|
||||
my @CMD;
|
||||
my %ERROR = ("UNKNOWN" => -1,
|
||||
"OK" => 0,
|
||||
"WARNING" => 1,
|
||||
"CRITICAL" => 2);
|
||||
my $status = $ERROR{"OK"};
|
||||
|
||||
|
||||
######################################################################
|
||||
# Main program
|
||||
######################################################################
|
||||
|
||||
$SIG{'ALRM'} = sub {
|
||||
print "Connection timed out\n";
|
||||
exit $ERROR{"CRITICAL"};
|
||||
};
|
||||
|
||||
# translate table for compatability with
|
||||
# check_nwstat (C version)
|
||||
SWITCH: for ($::opt_v) {
|
||||
/^LOAD(1|5|15)$/
|
||||
&& do { $desc = "Load <status> - Up <cmd2>, ".
|
||||
"$1-min load average = <cmd0>%";
|
||||
$cmd1 = "UTIL$1"; last; };
|
||||
/^CONNS$/ && do { $desc = "Conns <status>: ".
|
||||
"<cmd0> current connections";
|
||||
$cmd1 = "CONNECT"; last; };
|
||||
/^CDBUFF$/ && do { $desc = "Dirty cache buffers = <cmd0>";
|
||||
$cmd1 = "S3"; last; };
|
||||
/^LTCH$/ && do { $desc = "Long term cache hits = <cmd0>%";
|
||||
$cmd1 = "S1";
|
||||
$backward = 1; last; };
|
||||
/^CBUFF$/ && do { $desc = "Total cache buffers = <cmd0>";
|
||||
$cmd1 = "S2";
|
||||
$backward = 1; last; };
|
||||
/^LRUM$/ && do { $desc = "LRU sitting time = <cmd0> minutes";
|
||||
$cmd1 = "S5";
|
||||
$backward = 1; last; };
|
||||
/^VPF(.*)$/ && do { $desc = "<status><int(cmd0/1024)> MB ".
|
||||
"(<result>%) free on volume $1";
|
||||
$okstr = ""; $probstr = "Only ";
|
||||
$cmd1 = "VKF$1";
|
||||
$cmd2 = "VKS$1";
|
||||
$backward = 1; last; };
|
||||
/^VKF/ && do { $desc = "<status><cmd0> KB free on volume $1";
|
||||
$okstr = ""; $probstr = "Only ";
|
||||
$cmd1 = "$::opt_v";
|
||||
$backward = 1; last; };
|
||||
/^$/ && die "Nothing to check!";
|
||||
$desc = "<status>: <cmd0>";
|
||||
$cmd1 = "$::opt_v";
|
||||
}
|
||||
|
||||
|
||||
# begin timeout period, run the check
|
||||
alarm($::opt_to);
|
||||
open ( CMD, "$nwstatcmd $host $cmd1 $cmd2|" ) || die "Couldn't execute nwstat";
|
||||
@CMD = <CMD>;
|
||||
close ( CMD );
|
||||
alarm(0);
|
||||
|
||||
for (@CMD) { chomp; }
|
||||
|
||||
# for any variables that manipulate the results instead of
|
||||
# just using <cmd0> directly, do that manipulation here into <result>
|
||||
SWITCH: for ($::opt_v) {
|
||||
/^VPF/ && do { $result=int(("$CMD[0]"/"$CMD[1]")*100); last; };
|
||||
$result = "$CMD[0]";
|
||||
}
|
||||
|
||||
if ("$result" == -1) {
|
||||
$status = $ERROR{"UNKNOWN"};
|
||||
$desc = "Server returned \"variable unknown\"";
|
||||
} elsif ("$result" == -2) {
|
||||
$status = $ERROR{"CRITICAL"};
|
||||
$desc = "Connection failed";
|
||||
}
|
||||
|
||||
if (defined($::opt_cv) && $status == $ERROR{"OK"}) {
|
||||
if ($backward) {
|
||||
("$result" <= "$::opt_cv") && ( $status = $ERROR{"CRITICAL"} );
|
||||
} else {
|
||||
("$result" >= "$::opt_cv") && ( $status = $ERROR{"CRITICAL"} );
|
||||
}
|
||||
}
|
||||
if (defined($::opt_wv) && $status == $ERROR{"OK"}) {
|
||||
if ($backward) {
|
||||
("$result" <= "$::opt_wv") && ( $status = $ERROR{"WARNING"} );
|
||||
} else {
|
||||
("$result" >= "$::opt_wv") && ( $status = $ERROR{"WARNING"} );
|
||||
}
|
||||
}
|
||||
|
||||
$desc =~ s/<status>/($status == $ERROR{"OK"})?"$okstr":"$probstr"/eg;
|
||||
$desc =~ s/<([^>]*)cmd([0-3])([^>]*)>/eval("$1\"$CMD[$2]\"$3")/eg;
|
||||
$desc =~ s/<result>/"$result"/eg;
|
||||
|
||||
if (defined($::opt_url)) {
|
||||
print "<A HREF=\"$::opt_url\">$desc</A>\n";
|
||||
} else {
|
||||
print "$desc\n";
|
||||
}
|
||||
exit $status;
|
||||
|
||||
|
||||
######################################################################
|
||||
# Subroutines
|
||||
######################################################################
|
||||
|
||||
sub usage {
|
||||
|
||||
%ERROR = shift;
|
||||
|
||||
print <<EOF
|
||||
check_nwstat.pl plugin for Nagios
|
||||
by Cliff Woolley, (c) 2000
|
||||
|
||||
Usage: ./check_nwstat.pl <host_address> [-v variable] [-wv warn_value] [-cv crit_value] [-to to_sec] [-url url_value]
|
||||
|
||||
Options:
|
||||
[variable] = Variable to check. Valid variables include:
|
||||
LOAD1 = 1 minute average CPU load
|
||||
LOAD5 = 5 minute average CPU load
|
||||
LOAD15 = 15 minute average CPU load
|
||||
CONNS = number of currently licensed connections
|
||||
VPF<vol> = percent free space on volume <vol>
|
||||
VKF<vol> = KB of free space on volume <vol>
|
||||
LTCH = percent long term cache hits
|
||||
CBUFF = current number of cache buffers
|
||||
CDBUFF = current number of dirty cache buffers
|
||||
LRUM = LRU sitting time in minutes
|
||||
[warn_value] = Threshold for value necessary to result in a warning status
|
||||
[crit_value] = Threshold for value necessary to result in a critical status
|
||||
[to_sec] = Number of secs before connection times out - default is 10 sec
|
||||
[url_value] = URL to use in output as a hyperlink. Useful to link to a page
|
||||
with more details or history for this variable (ie an MRTG page)
|
||||
|
||||
This plugin attempts to contact the MRTGEXT NLM running on a Novell server
|
||||
to gather the requested system information.
|
||||
|
||||
Notes:
|
||||
- This plugin requres that the MRTGEXT.NLM file distributed with
|
||||
James Drews' MRTG extension for NetWare (available from
|
||||
http://www.engr.wisc.edu/~drews/mrtg/) be loaded on the Novell
|
||||
servers you wish to check.
|
||||
- Critical thresholds should be lower than warning thresholds when
|
||||
the following variables are checked: VPF, VKF, LTCH, CBUFF, and LRUM.
|
||||
EOF
|
||||
;
|
||||
|
||||
exit $ERROR{"UNKNOWN"};
|
||||
}
|
||||
|
||||
|
|
@ -1,148 +0,0 @@
|
|||
#!/usr/bin/perl
|
||||
# ------------------------------------------------------------------------------
|
||||
# File Name: check_pop3.pl
|
||||
# Author: Richard Mayhew - South Africa
|
||||
# Date: 2000/01/21
|
||||
# Version: 1.0
|
||||
# Description: This script will check to see if an POP3 is running
|
||||
# and whether authentication can take place.
|
||||
# Email: netsaint@splash.co.za
|
||||
# ------------------------------------------------------------------------------
|
||||
# Copyright 1999 (c) Richard Mayhew
|
||||
# Credits go to Ethan Galstad for coding Nagios
|
||||
# If any changes are made to this script, please mail me a copy of the
|
||||
# changes :)
|
||||
# License GPL
|
||||
# ------------------------------------------------------------------------------
|
||||
# Date Author Reason
|
||||
# ---- ------ ------
|
||||
# 1999/09/20 RM Creation
|
||||
# 1999/09/20 TP Changed script to use strict, more secure by
|
||||
# specifying $ENV variables. The bind command is
|
||||
# still insecure through. Did most of my work
|
||||
# with perl -wT and 'use strict'
|
||||
# 2000/01/20 RM Corrected POP3 Exit State.
|
||||
# 2000/01/21 RM Fix Exit Codes Again!!
|
||||
# 2003/12/30 CZ Proper CRLF in communication w/server
|
||||
# Fixed infinite loop
|
||||
# Error checking on welcome banner, USER, PASS commands
|
||||
# Better error condition handling
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# -----------------------------------------------------------------[ Require ]--
|
||||
require 5.004;
|
||||
|
||||
# --------------------------------------------------------------------[ Uses ]--
|
||||
use Socket;
|
||||
use strict;
|
||||
|
||||
# --------------------------------------------------------------[ Enviroment ]--
|
||||
$ENV{PATH} = "/bin";
|
||||
$ENV{BASH_ENV} = "";
|
||||
$|=1;
|
||||
# ------------------------------------------------------------------[ Global ]--
|
||||
my $TIMEOUT = 60;
|
||||
|
||||
# -------------------------------------------------------------------[ usage ]--
|
||||
sub usage
|
||||
{
|
||||
print "Minimum arguments not supplied!\n";
|
||||
print "\n";
|
||||
print "Perl Check POP3 plugin for Nagios\n";
|
||||
print "Copyright (c) 2000 Richard Mayhew\n";
|
||||
print "\n";
|
||||
print "Usage: check_pop3.pl <host> <username> <password> [port]\n";
|
||||
print "\n";
|
||||
print "<port> = Port that the pop3 daemon is running on <host>. Defaults to 110.\n";
|
||||
exit -1;
|
||||
|
||||
}
|
||||
|
||||
# --------------------------------------------------------------[ bindRemote ]--
|
||||
sub bindRemote
|
||||
{
|
||||
my ($in_remotehost, $in_remoteport, $in_hostname) = @_;
|
||||
my $proto;
|
||||
my $sockaddr;
|
||||
my $this;
|
||||
my $thisaddr;
|
||||
my $that;
|
||||
my ($name, $aliases,$type,$len,$thataddr) = gethostbyname($in_remotehost);
|
||||
|
||||
if (!socket(ClientSocket,AF_INET, SOCK_STREAM, $proto)) { die $!; }
|
||||
$sockaddr = 'S n a4 x8';
|
||||
$this = pack($sockaddr, AF_INET, 0, $thisaddr);
|
||||
$that = pack($sockaddr, AF_INET, $in_remoteport, $thataddr);
|
||||
if (!bind(ClientSocket, $this)) { print "Connection Refused\n"; exit 2; }
|
||||
if (!connect(ClientSocket, $that)) { print "Connection Refused\n"; exit 2; }
|
||||
select(ClientSocket); $| = 1; select(STDOUT);
|
||||
return \*ClientSocket;
|
||||
}
|
||||
|
||||
# ====================================================================[ MAIN ]==
|
||||
MAIN:
|
||||
{
|
||||
my $hostname;
|
||||
my $remotehost = shift || &usage;
|
||||
my $username = shift || &usage;
|
||||
my $password = shift || &usage;
|
||||
my $remoteport = shift || 110;
|
||||
|
||||
# Just in case of problems, let's not hang Nagios
|
||||
$SIG{'ALRM'} = sub {
|
||||
print "Something is Taking a Long Time, Increase Your TIMEOUT (Currently Set At $TIMEOUT Seconds)\n";
|
||||
exit -1;
|
||||
};
|
||||
|
||||
alarm($TIMEOUT);
|
||||
|
||||
chop($hostname = `hostname`);
|
||||
my ($name, $alias, $proto) = getprotobyname('tcp');
|
||||
my $ClientSocket = &bindRemote($remotehost,$remoteport,$hostname);
|
||||
|
||||
|
||||
&err("no welcome banner\n") unless $_ = <ClientSocket>;
|
||||
&err("bad welcome banner: " . $_) unless $_ =~ /^\+OK/;
|
||||
|
||||
print ClientSocket "USER $username\r\n";
|
||||
|
||||
&err("no response to USER command\n") unless $_ = <ClientSocket>;
|
||||
&err("bad response to USER: " . $_) unless $_ =~ /^\+OK/;
|
||||
|
||||
print ClientSocket "PASS $password\r\n";
|
||||
|
||||
&err("no response to PASS command\n") unless $_ = <ClientSocket>;
|
||||
&err("bad response to PASS: " . $_) unless $_ =~ /^\+OK/;
|
||||
|
||||
print ClientSocket "LIST\r\n";
|
||||
|
||||
my $bad = 1;
|
||||
my $msgs = 0;
|
||||
while (<ClientSocket>) {
|
||||
&err(($1||' UNKNOWN')."\n") if (m/\-ERR(.*)/);
|
||||
$bad = 0 if /^\+OK/;
|
||||
$msgs = $1 if /^(\d+)\s+/;
|
||||
last if /^\./;
|
||||
}
|
||||
&message("$msgs\n") unless $bad;
|
||||
&err("missing +OK to LIST command\n");
|
||||
}
|
||||
|
||||
sub message
|
||||
{
|
||||
my $msg = shift;
|
||||
alarm(0);
|
||||
print ClientSocket "QUIT\r\n";
|
||||
print "POP3 OK - Total Messages On Server: $msg";
|
||||
exit 0;
|
||||
}
|
||||
|
||||
sub err
|
||||
{
|
||||
my $msg = shift;
|
||||
alarm(0);
|
||||
print ClientSocket "QUIT\r\n";
|
||||
print "POP3 Error: $msg";
|
||||
exit 2;
|
||||
}
|
||||
|
|
@ -1,400 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
#
|
||||
# Check_procl.sh
|
||||
#
|
||||
# Program: Process load check plugin for Nagios
|
||||
# License : GPL
|
||||
# Copyright (c) 2002 Jerome Tytgat (j.tytgat@sioban.net)
|
||||
#
|
||||
# check_procl.sh,v 1.1 2002/07/04 09:35
|
||||
#
|
||||
# Description :
|
||||
#
|
||||
# This plugin is for check the %cpu, %mem or cputime of one or more process
|
||||
#
|
||||
# Usage :
|
||||
#
|
||||
# check_procl.sh -p process1,process2,... -w a.b -c c.d --cpu
|
||||
# check_procl.sh -p process1,process2,... -w a.b -c c.d --mem
|
||||
# check_procl.sh -p process1,process2,... -w a:b:c -c d:e:f --cputime
|
||||
#
|
||||
# check_procl.sh -p %all% -e process1,process2,... -w <a.b | a:b:c> -c <c.d | d:e:f> <--cpu | --mem | --cputime>
|
||||
# check_procl.sh -p %max% -e process1,process2,... -w <a.b | a:b:c> -c <c.d | d:e:f> <--cpu | --mem | --cputime>
|
||||
#
|
||||
# Example :
|
||||
#
|
||||
# To know the memory eaten by HTTPD processes, be warned when it reach 50% and be critical when it reach 75%
|
||||
# check_procl.sh -p httpd -w 50.0 -c 75.0 --mem
|
||||
# > OK - total %MEM for process httpd : 46.1
|
||||
#
|
||||
# To know the process which eat the more cpu time, but as we are under linux and are using kapm we do :
|
||||
# check_procl.sh -p %max% -e kapmd-idle,kapmd -w 0:1:0 -c 0:2:0 --cputime
|
||||
# > CRITICAL - total CPUTIME for process named : 02:32:10
|
||||
#
|
||||
# Tested on solaris 7/8, Linux Redhat 7.3 and Linux Suse 7.1
|
||||
#
|
||||
# BUGS : problems with handling time on solaris...
|
||||
|
||||
|
||||
help_usage() {
|
||||
echo "Usage:"
|
||||
echo " $0 -p <process_name1,process_name2,... | %all% | %max%>"
|
||||
echo " [-e <process_name1,process_name2,...>] -w warning -c critical < --cpu | --mem | --cputime>"
|
||||
echo " $0 (-v | --version)"
|
||||
echo " $0 (-h | --help)"
|
||||
}
|
||||
|
||||
help_version() {
|
||||
echo "check_procl.sh (nagios-plugins) 1.1"
|
||||
echo "The nagios plugins come with ABSOLUTELY NO WARRANTY. You may redistribute"
|
||||
echo "copies of the plugins under the terms of the GNU General Public License."
|
||||
echo "For more information about these matters, see the file named COPYING."
|
||||
echo "Copyright (c) 2002 Jerome Tytgat - j.tytgat@sioban.net"
|
||||
echo "Greetings goes to Websurg which kindly let me took time to develop this"
|
||||
echo " Manu Feig and Jacques Kern who were my beta testers, thanks to them !"
|
||||
}
|
||||
|
||||
verify_dep() {
|
||||
needed="bash cut egrep expr grep let ps sed sort tail test tr wc"
|
||||
for i in `echo $needed`
|
||||
do
|
||||
type $i > /dev/null 2>&1 /dev/null
|
||||
if [ $? -eq 1 ]
|
||||
then
|
||||
echo "I am missing an important component : $i"
|
||||
echo "Cannot continue, sorry, try to find the missing one..."
|
||||
exit 3
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
myself=$0
|
||||
|
||||
verify_dep
|
||||
|
||||
if [ "$1" = "-h" -o "$1" = "--help" ]
|
||||
then
|
||||
help_version
|
||||
echo ""
|
||||
echo "This plugin will check either the cumulutative %cpu, %mem or cputime"
|
||||
echo "of a process."
|
||||
echo ""
|
||||
help_usage
|
||||
echo ""
|
||||
echo "Required Arguments:"
|
||||
echo " -p, --process STRING1,STRING2,..."
|
||||
echo " names of the processes we want to monitor,"
|
||||
echo " you can add as much as process as you want, separated by comma,"
|
||||
echo " hey will be cumulated"
|
||||
echo " -p, --process %all%"
|
||||
echo " The special keyword %all% will check the cumulative cpu/mem/time of all process"
|
||||
echo " WARNING : Can be very slow on heavy loaded servers, watch your timeout !"
|
||||
echo " -p, --process %max%"
|
||||
echo " The special keyword %max% will check the process which eat the most"
|
||||
echo " WARNING : only select the process which eat the more, not the cumulative,"
|
||||
echo " but return the cumulative"
|
||||
echo " -w, --warning INTEGER.INTEGER or INTERGER:INTEGER:INTEGER"
|
||||
echo " generate warning state if process count is outside this range"
|
||||
echo " -c, --critical INTEGER.INTEGER or INTERGER:INTEGER:INTEGER"
|
||||
echo " generate critical state if process count is outside this range"
|
||||
echo " --cpu"
|
||||
echo " return the current cpu usage for the given process"
|
||||
echo " --mem"
|
||||
echo " return the current memory usage for the given process"
|
||||
echo " --cputime"
|
||||
echo " return the total cputime usage for the given process"
|
||||
echo ""
|
||||
echo "Optional Argument:"
|
||||
echo " -e, --exclude-process STRING1,STRING2,..."
|
||||
echo " names of the processes we want don't want to monitor"
|
||||
echo " only useful when associated with %all% or %max% keywords, else ignored"
|
||||
echo " ex : kapm-idled on linux is a process which eat memory / cputime but not really... ;-)"
|
||||
echo ""
|
||||
exit 3
|
||||
fi
|
||||
|
||||
if [ "$1" = "-v" -o "$1" = "--version" ]
|
||||
then
|
||||
help_version
|
||||
exit 3
|
||||
fi
|
||||
|
||||
if [ `echo $@|tr "=" " "|wc -w` -lt 7 ]
|
||||
then
|
||||
echo "Bad arguments number (need at least 7)!"
|
||||
help_usage
|
||||
exit 3
|
||||
fi
|
||||
|
||||
tt=0
|
||||
process_name=""
|
||||
exclude_process_name=""
|
||||
wt=""
|
||||
ct=""
|
||||
|
||||
# Test of the command lines arguments
|
||||
while test $# -gt 0
|
||||
do
|
||||
|
||||
case "$1" in
|
||||
-p|--process)
|
||||
if [ -n "$process_name" ]
|
||||
then
|
||||
echo "Only one --process argument is useful..."
|
||||
help_usage
|
||||
exit 3
|
||||
fi
|
||||
shift
|
||||
process_name="`echo $1|tr \",\" \"|\"`"
|
||||
;;
|
||||
-e|--exclude-process)
|
||||
if [ -n "$exclude_process_name" ]
|
||||
then
|
||||
echo "Only one --exclude-process argument is useful..."
|
||||
help_usage
|
||||
exit 3
|
||||
fi
|
||||
shift
|
||||
exclude_process_name="`echo $1|tr \",\" \"|\"`"
|
||||
;;
|
||||
-w|--warning)
|
||||
if [ -n "$wt" ]
|
||||
then
|
||||
echo "Only one --warning argument needed... Trying to test bad things ? :-)"
|
||||
help_usage
|
||||
exit 3
|
||||
fi
|
||||
shift
|
||||
wt=$1
|
||||
;;
|
||||
-c|--critical)
|
||||
if [ -n "$ct" ]
|
||||
then
|
||||
echo "Only one --critical argument needed... Trying to test bad things ? :-)"
|
||||
help_usage
|
||||
exit 3
|
||||
fi
|
||||
shift
|
||||
ct=$1
|
||||
;;
|
||||
--cpu)
|
||||
if [ $tt -eq 0 ]
|
||||
then
|
||||
tt=1
|
||||
else
|
||||
echo "Only one of the arguments --cpu/--mem/--cputime can be used at a time !"
|
||||
help_usage
|
||||
exit 3
|
||||
fi
|
||||
type_arg_aff="%CPU"
|
||||
type_arg="pcpu"
|
||||
delim="."
|
||||
;;
|
||||
--mem)
|
||||
if [ $tt -eq 0 ]
|
||||
then
|
||||
tt=2
|
||||
else
|
||||
echo "Only one of the arguments --cpu/--mem/--cputime can be used at a time !"
|
||||
help_usage
|
||||
exit 3
|
||||
fi
|
||||
type_arg_aff="%MEM"
|
||||
type_arg="pmem"
|
||||
delim="."
|
||||
;;
|
||||
--cputime)
|
||||
if [ $tt -eq 0 ]
|
||||
then
|
||||
tt=3
|
||||
else
|
||||
echo "Only one of the arguments --cpu/--mem/--cputime can be used at a time !"
|
||||
help_usage
|
||||
exit 3
|
||||
fi
|
||||
type_arg_aff="TIME"
|
||||
type_arg="time"
|
||||
delim=":"
|
||||
;;
|
||||
*)
|
||||
echo "Unknown argument $1"
|
||||
help_usage
|
||||
exit 3
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# Is the process running ?
|
||||
if [ -z "`ps -e | egrep \"$process_name?\"`" -a "$process_name" != "%all%" -a "$process_name" != "%max%" ]
|
||||
then
|
||||
echo "WARNING: process $process_name not running !"
|
||||
exit 3
|
||||
fi
|
||||
|
||||
# Cut of warning and critical values
|
||||
wt_value1=`echo $wt|cut -d"$delim" -f1`
|
||||
wt_value2=`echo $wt|cut -d"$delim" -f2`
|
||||
ct_value1=`echo $ct|cut -d"$delim" -f1`
|
||||
ct_value2=`echo $ct|cut -d"$delim" -f2`
|
||||
|
||||
if [ $tt -eq 3 ]
|
||||
then
|
||||
wt_value3=`echo $wt|cut -d"$delim" -f3`
|
||||
ct_value3=`echo $ct|cut -d"$delim" -f3`
|
||||
else
|
||||
wt_value3=0
|
||||
ct_value3=0
|
||||
fi
|
||||
|
||||
# Integrity check of warning and critical values
|
||||
if [ -z "$wt_value1" -o -z "$wt_value2" -o -z "$wt_value3" ]
|
||||
then
|
||||
echo "Bad expression in the WARNING field : $wt"
|
||||
help_usage
|
||||
exit 3
|
||||
fi
|
||||
|
||||
if [ "`echo $wt_value1|tr -d \"[:digit:]\"`" != "" -o "`echo $wt_value2|tr -d \"[:digit:]\"`" != "" -o "`echo $wt_value3|tr -d \"[:digit:]\"`" != "" ]
|
||||
then
|
||||
echo "Bad expression in the WARNING field : $wt"
|
||||
help_usage
|
||||
exit 3
|
||||
fi
|
||||
|
||||
if [ -z "$ct_value1" -o -z "$ct_value2" -o -z "$ct_value3" ]
|
||||
then
|
||||
echo "Bad expression in the CRITICAL field : $ct"
|
||||
help_usage
|
||||
exit 3
|
||||
fi
|
||||
|
||||
|
||||
if [ "`echo $ct_value1|tr -d \"[:digit:]\"`" != "" -o "`echo $ct_value2|tr -d \"[:digit:]\"`" != "" -o "`echo $ct_value3|tr -d \"[:digit:]\"`" != "" ]
|
||||
then
|
||||
echo "Bad expression in the CRITICAL field : $ct"
|
||||
help_usage
|
||||
exit 3
|
||||
fi
|
||||
|
||||
# ps line construction set...
|
||||
case "$process_name" in
|
||||
%all%)
|
||||
if [ -z "$exclude_process_name" ]
|
||||
then
|
||||
psline=`ps -eo $type_arg,comm|egrep -v "$myself|$type_arg_aff?"|sed "s/^ *\([0-9]\)/\1/"|cut -d" " -f1`
|
||||
else
|
||||
psline=`ps -eo $type_arg,comm|egrep -v "$myself|$type_arg_aff|$exclude_process_name?"|sed "s/^ *\([0-9]\)/\1/"|cut -d" " -f1`
|
||||
fi
|
||||
;;
|
||||
%max%)
|
||||
if [ -z "$exclude_process_name" ]
|
||||
then
|
||||
pstmp=`ps -eo $type_arg,comm|egrep -v "$myself|$type_arg_aff?"|sort|tail -1|sed "s/^ *\([0-9]\)/\1/"|cut -d" " -f2`
|
||||
else
|
||||
pstmp=`ps -eo $type_arg,comm|egrep -v "$myself|$type_arg_aff|$exclude_process_name?"|sort|tail -1|sed "s/^ *\([0-9]\)/\1/"|cut -d" " -f2`
|
||||
fi
|
||||
psline=`ps -eo $type_arg,comm|grep $pstmp|sed "s/^ *\([0-9]\)/\1/"|cut -d" " -f1`
|
||||
process_name=$pstmp
|
||||
;;
|
||||
*)
|
||||
psline=`ps -eo $type_arg,comm|egrep "$process_name?"|sed "s/^ *\([0-9]\)/\1/"|cut -d" " -f1`
|
||||
;;
|
||||
esac
|
||||
|
||||
total1=0
|
||||
total2=0
|
||||
total3=0
|
||||
|
||||
|
||||
# fetching the values
|
||||
for i in $psline
|
||||
do
|
||||
# Special case for solaris - several format exist for the time function...
|
||||
if [ ${#i} -le 6 -a "$tt" -eq 3 ]
|
||||
then
|
||||
i="00:$i"
|
||||
fi
|
||||
value1=`echo $i|cut -d$delim -f1`
|
||||
value2=`echo $i|cut -d$delim -f2`
|
||||
value3=`echo $i|cut -d$delim -f3`
|
||||
value3=`test -z "$value3" && echo 0 || echo $value3`
|
||||
total1=`expr $total1 + $value1`
|
||||
total2=`expr $total2 + $value2`
|
||||
total3=`expr $total3 + $value3`
|
||||
if [ $tt -eq 3 ]
|
||||
then
|
||||
if [ $total3 -ge 60 ]
|
||||
then
|
||||
let total2+=1
|
||||
let total3-=60
|
||||
fi
|
||||
if [ $total2 -ge 60 ]
|
||||
then
|
||||
let total1+=1
|
||||
let total2-=60
|
||||
fi
|
||||
else
|
||||
if [ $total2 -ge 10 ]
|
||||
then
|
||||
let total1+=1
|
||||
let total2=total2-10
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
warn=0
|
||||
crit=0
|
||||
|
||||
# evaluation of the cumulative values vs warning and critical values
|
||||
case "$tt" in
|
||||
1)
|
||||
return_total="$total1.$total2"
|
||||
test $total1 -gt $ct_value1 && crit=1
|
||||
test $total1 -eq $ct_value1 -a $total2 -ge $ct_value2 && crit=1
|
||||
test $total1 -gt $wt_value1 && warn=1
|
||||
test $total1 -eq $wt_value1 -a $total2 -ge $wt_value2 && warn=1
|
||||
;;
|
||||
2)
|
||||
return_total="$total1.$total2"
|
||||
test $total1 -gt $ct_value1 && crit=1
|
||||
test $total1 -eq $ct_value1 -a $total2 -ge $ct_value2 && crit=1
|
||||
test $total1 -gt $wt_value1 && warn=1
|
||||
test $total1 -eq $wt_value1 -a $total2 -ge $wt_value2 && warn=1
|
||||
;;
|
||||
3)
|
||||
return_total="`test ${#total1} -eq 1 && echo 0`$total1:`test ${#total2} -eq 1 && echo 0`$total2:`test ${#total3} -eq 1 && echo 0`$total3"
|
||||
test $total1 -gt $ct_value1 && crit=1
|
||||
test $total1 -eq $ct_value1 -a $total2 -gt $ct_value2 && crit=1
|
||||
test $total1 -eq $ct_value1 -a $total2 -eq $ct_value2 -a $total3 -ge $ct_value3 && crit=1
|
||||
test $total1 -gt $wt_value1 && warn=1
|
||||
test $total1 -eq $wt_value1 -a $total2 -gt $wt_value2 && warn=1
|
||||
test $total1 -eq $wt_value1 -a $total2 -eq $wt_value2 -a $total3 -ge $wt_value3 && warn=1
|
||||
;;
|
||||
esac
|
||||
|
||||
# last check ...
|
||||
if [ $crit -eq 1 -a $warn -eq 0 ]
|
||||
then
|
||||
echo "Critical value must be greater than warning value !"
|
||||
help_usage
|
||||
exit 3
|
||||
fi
|
||||
|
||||
# Finally Inform Nagios of what we found...
|
||||
if [ $crit -eq 1 ]
|
||||
then
|
||||
echo "CRITICAL - total $type_arg_aff for process `echo $process_name|tr \"|\" \",\"` : $return_total"
|
||||
exit 2
|
||||
elif [ $warn -eq 1 ]
|
||||
then
|
||||
echo "WARNING - total $type_arg_aff for process `echo $process_name|tr \"|\" \",\"` : $return_total"
|
||||
exit 1
|
||||
else
|
||||
echo "OK - total $type_arg_aff for process `echo $process_name|tr \"|\" \",\"` : $return_total"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Hey what are we doing here ???
|
||||
exit 3
|
||||
|
|
@ -1,147 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
#
|
||||
# Check_procr.sh
|
||||
#
|
||||
# Program: Process running check plugin for Nagios
|
||||
# License : GPL
|
||||
# Copyright (c) 2002 Jerome Tytgat (j.tytgat@sioban.net)
|
||||
#
|
||||
# check_procr.sh,v 1.0 2002/09/18 15:28
|
||||
#
|
||||
# Description :
|
||||
#
|
||||
# This plugin check if at least one process is running
|
||||
#
|
||||
# Usage :
|
||||
#
|
||||
# check_procr.sh -p process_name
|
||||
#
|
||||
# Example :
|
||||
#
|
||||
# To know if snort is running
|
||||
# check_procr.sh -p snort
|
||||
# > OK - total snort running : PID=23441
|
||||
#
|
||||
# Linux Redhat 7.3
|
||||
#
|
||||
|
||||
help_usage() {
|
||||
echo "Usage:"
|
||||
echo " $0 -p <process_name>"
|
||||
echo " $0 (-v | --version)"
|
||||
echo " $0 (-h | --help)"
|
||||
}
|
||||
|
||||
help_version() {
|
||||
echo "check_procr.sh (nagios-plugins) 1.0"
|
||||
echo "The nagios plugins come with ABSOLUTELY NO WARRANTY. You may redistribute"
|
||||
echo "copies of the plugins under the terms of the GNU General Public License."
|
||||
echo "For more information about these matters, see the file named COPYING."
|
||||
echo "Copyright (c) 2002 Jerome Tytgat - j.tytgat@sioban.net"
|
||||
echo "Greetings goes to Websurg which kindly let me took time to develop this"
|
||||
echo " Manu Feig and Jacques Kern who were my beta testers, thanks to them !"
|
||||
}
|
||||
|
||||
verify_dep() {
|
||||
needed="bash cut egrep expr grep let ps sed sort tail test tr wc"
|
||||
for i in `echo $needed`
|
||||
do
|
||||
type $i > /dev/null 2>&1 /dev/null
|
||||
if [ $? -eq 1 ]
|
||||
then
|
||||
echo "I am missing an important component : $i"
|
||||
echo "Cannot continue, sorry, try to find the missing one..."
|
||||
exit 3
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
myself=$0
|
||||
|
||||
verify_dep
|
||||
|
||||
if [ "$1" = "-h" -o "$1" = "--help" ]
|
||||
then
|
||||
help_version
|
||||
echo ""
|
||||
echo "This plugin will check if a process is running."
|
||||
echo ""
|
||||
help_usage
|
||||
echo ""
|
||||
echo "Required Arguments:"
|
||||
echo " -p, --process STRING"
|
||||
echo " process name we want to verify"
|
||||
echo ""
|
||||
exit 3
|
||||
fi
|
||||
|
||||
if [ "$1" = "-v" -o "$1" = "--version" ]
|
||||
then
|
||||
help_version
|
||||
exit 3
|
||||
fi
|
||||
|
||||
if [ `echo $@|tr "=" " "|wc -w` -lt 2 ]
|
||||
then
|
||||
echo "Bad arguments number (need two)!"
|
||||
help_usage
|
||||
exit 3
|
||||
fi
|
||||
|
||||
tt=0
|
||||
process_name=""
|
||||
exclude_process_name=""
|
||||
wt=""
|
||||
ct=""
|
||||
|
||||
# Test of the command lines arguments
|
||||
while test $# -gt 0
|
||||
do
|
||||
|
||||
case "$1" in
|
||||
-p|--process)
|
||||
if [ -n "$process_name" ]
|
||||
then
|
||||
echo "Only one --process argument is useful..."
|
||||
help_usage
|
||||
exit 3
|
||||
fi
|
||||
shift
|
||||
process_name="`echo $1|tr \",\" \"|\"`"
|
||||
;;
|
||||
*)
|
||||
echo "Unknown argument $1"
|
||||
help_usage
|
||||
exit 3
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# ps line construction set...
|
||||
for i in `ps ho pid -C $process_name`
|
||||
do
|
||||
pid_list="$pid_list $i"
|
||||
done
|
||||
|
||||
if [ -z "$pid_list" ]
|
||||
then
|
||||
crit=1
|
||||
else
|
||||
crit=0
|
||||
fi
|
||||
|
||||
# Finally Inform Nagios of what we found...
|
||||
if [ $crit -eq 1 ]
|
||||
then
|
||||
echo "CRITICAL - process $process_name is not running !"
|
||||
exit 2
|
||||
else
|
||||
echo "OK - process $process_name is running : PID=$pid_list "
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Hey what are we doing here ???
|
||||
exit 3
|
||||
|
||||
Loading…
Reference in a new issue