mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-31 01:35:36 +02:00
2009-09-16 Sancho Lerena <slerena@artica.es>
* util/pandora_exec -> bin/pandora_exec: Moved. * pandora_server -> util/pandora_server: Moved. * plugins/pandora_loadgen.pl plugins/pandora_server_status.pl: New plugins for generate data and get Pandora FMS server status and load. * Config.pm, pandora_db.pl: Version update. * pandora_server.spec, Makefile.PL, pandora_server_installer: Updated paths and dependencies git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1946 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
parent
a461cf9446
commit
f21aa5a9d2
@ -1,3 +1,19 @@
|
|||||||
|
2009-09-16 Sancho Lerena <slerena@artica.es>
|
||||||
|
|
||||||
|
* util/pandora_exec -> bin/pandora_exec: Moved.
|
||||||
|
|
||||||
|
* pandora_server -> util/pandora_server: Moved.
|
||||||
|
|
||||||
|
* plugins/pandora_loadgen.pl
|
||||||
|
plugins/pandora_server_status.pl: New plugins for generate data
|
||||||
|
and get Pandora FMS server status and load.
|
||||||
|
|
||||||
|
* Config.pm, pandora_db.pl: Version update.
|
||||||
|
|
||||||
|
* pandora_server.spec,
|
||||||
|
Makefile.PL,
|
||||||
|
pandora_server_installer: Updated paths and dependencies
|
||||||
|
|
||||||
2009-09-15 Sancho Lerena <slerena@artica.es>
|
2009-09-15 Sancho Lerena <slerena@artica.es>
|
||||||
|
|
||||||
* util/pandora_backup.sh: Finished backup command line tool
|
* util/pandora_backup.sh: Finished backup command line tool
|
||||||
|
@ -12,16 +12,14 @@ WriteMakefile(
|
|||||||
IO::Socket => 0,
|
IO::Socket => 0,
|
||||||
Time::Format => 0,
|
Time::Format => 0,
|
||||||
Time::Local => 0,
|
Time::Local => 0,
|
||||||
Date::Manip => 0,
|
|
||||||
XML::Simple => 0,
|
XML::Simple => 0,
|
||||||
Time::HiRes => 0,
|
Time::HiRes => 0,
|
||||||
IO::Socket => 0,
|
IO::Socket => 0,
|
||||||
Mail::Sendmail => 0,
|
Mail::Sendmail => 0,
|
||||||
Net::Traceroute::PurePerl => 0,
|
Net::Traceroute::PurePerl => 0,
|
||||||
HTML::Entities => 0,
|
HTML::Entities => 0,
|
||||||
SNMP => 0
|
|
||||||
},
|
},
|
||||||
EXE_FILES => [ 'bin/pandora_server', 'util/pandora_exec'],
|
EXE_FILES => [ 'bin/pandora_server', 'bin/pandora_exec'],
|
||||||
PMLIBDIRS => [ 'lib' ],
|
PMLIBDIRS => [ 'lib' ],
|
||||||
'dist' => { 'TAR' => 'tar', 'TARFLAGS' => 'cvfz', 'SUFFIX'
|
'dist' => { 'TAR' => 'tar', 'TARFLAGS' => 'cvfz', 'SUFFIX'
|
||||||
=> '.gz', 'COMPRESS' => 'gzip'}
|
=> '.gz', 'COMPRESS' => 'gzip'}
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#
|
#
|
||||||
# Executes the given command and prints its output to stdout. If the
|
# Executes the given command and prints its output to stdout. If the
|
||||||
# execution times out or the command does not exist nothing is printed
|
# execution times out or the command does not exist nothing is printed
|
||||||
# to stdout.
|
# to stdout. This is part of Pandora FMS Plugin server, do not delete!.
|
||||||
#
|
#
|
||||||
# Usage: pandora_exec <timeout in seconds> <command> [arguments]
|
# Usage: pandora_exec <timeout in seconds> <command> [arguments]
|
||||||
##########################################################################
|
##########################################################################
|
@ -37,7 +37,7 @@ our @EXPORT = qw(
|
|||||||
|
|
||||||
# version: Defines actual version of Pandora Server for this module only
|
# version: Defines actual version of Pandora Server for this module only
|
||||||
my $pandora_version = "3.0-dev";
|
my $pandora_version = "3.0-dev";
|
||||||
my $pandora_build = "PS090901";
|
my $pandora_build = "PS090915";
|
||||||
our $VERSION = $pandora_version." ".$pandora_build;
|
our $VERSION = $pandora_version." ".$pandora_build;
|
||||||
|
|
||||||
# Setup hash
|
# Setup hash
|
||||||
|
@ -22,7 +22,7 @@ Requires(pre): /usr/sbin/useradd
|
|||||||
AutoReq: 0
|
AutoReq: 0
|
||||||
Provides: %{name}-%{version}
|
Provides: %{name}-%{version}
|
||||||
Requires: perl-mail-sendmail perl-DBI perl-DBD-mysql perl-time-format
|
Requires: perl-mail-sendmail perl-DBI perl-DBD-mysql perl-time-format
|
||||||
Requires: perl-mail-sendmail perl-netaddr-ip perl-SNMP net-snmp
|
Requires: perl-mail-sendmail perl-netaddr-ip net-snmp
|
||||||
Requires: nmap wmic sudo
|
Requires: nmap wmic sudo
|
||||||
|
|
||||||
%description
|
%description
|
||||||
@ -36,8 +36,10 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%build
|
%build
|
||||||
|
|
||||||
%install
|
%install
|
||||||
|
#Uncomment this if you build from other RPM system (fedora, opensuse != 11..)
|
||||||
#%define perl_version %(rpm -q --queryformat='%{VERSION}' perl)
|
#%define perl_version %(rpm -q --queryformat='%{VERSION}' perl)
|
||||||
#export perl_version=`rpm -q --queryformat='%{VERSION}' perl`
|
#export perl_version=`rpm -q --queryformat='%{VERSION}' perl`
|
||||||
|
|
||||||
# Temporal hack for For SLES 11 only, warning
|
# Temporal hack for For SLES 11 only, warning
|
||||||
export perl_version=5.10.0
|
export perl_version=5.10.0
|
||||||
%define perl_version 5.10.0
|
%define perl_version 5.10.0
|
||||||
@ -55,18 +57,18 @@ mkdir -p $RPM_BUILD_ROOT/var/spool/pandora/data_in/md5
|
|||||||
mkdir -p $RPM_BUILD_ROOT/var/log/pandora/
|
mkdir -p $RPM_BUILD_ROOT/var/log/pandora/
|
||||||
mkdir -p $RPM_BUILD_ROOT%{prefix}/pandora_server/conf/
|
mkdir -p $RPM_BUILD_ROOT%{prefix}/pandora_server/conf/
|
||||||
mkdir -p $RPM_BUILD_ROOT/usr/lib/perl5/site_perl/$perl_version/
|
mkdir -p $RPM_BUILD_ROOT/usr/lib/perl5/site_perl/$perl_version/
|
||||||
|
|
||||||
|
# All binaries go to /usr/local/bin
|
||||||
cp -aRf bin/pandora_server $RPM_BUILD_ROOT/usr/local/bin/
|
cp -aRf bin/pandora_server $RPM_BUILD_ROOT/usr/local/bin/
|
||||||
cp -aRf util/pandora_exec $RPM_BUILD_ROOT/usr/local/bin/
|
cp -aRf bin/pandora_exec $RPM_BUILD_ROOT/usr/local/bin/
|
||||||
cp -aRf bin/tentacle_server $RPM_BUILD_ROOT/usr/local/bin/
|
cp -aRf bin/tentacle_server $RPM_BUILD_ROOT/usr/local/bin/
|
||||||
#cp -aRf util/wmic $RPM_BUILD_ROOT/usr/bin/
|
|
||||||
cp -aRf conf/* $RPM_BUILD_ROOT%{prefix}/pandora_server/conf/
|
cp -aRf conf/* $RPM_BUILD_ROOT%{prefix}/pandora_server/conf/
|
||||||
cp -aRf util $RPM_BUILD_ROOT%{prefix}/pandora_server/
|
cp -aRf util $RPM_BUILD_ROOT%{prefix}/pandora_server/
|
||||||
cp -aRf lib/* $RPM_BUILD_ROOT/usr/lib/perl5/site_perl/$perl_version/
|
cp -aRf lib/* $RPM_BUILD_ROOT/usr/lib/perl5/site_perl/$perl_version/
|
||||||
#cp -aRf util/Time/ $RPM_BUILD_ROOT/usr/lib/perl5/site_perl/$perl_version/
|
|
||||||
#cp -aRf util/Traceroute/ $RPM_BUILD_ROOT/usr/lib/perl5/site_perl/$perl_version/Net
|
|
||||||
#cp -aRf util/Traceroute.pm $RPM_BUILD_ROOT/usr/lib/perl5/site_perl/$perl_version/Net
|
|
||||||
cp -aRf AUTHORS COPYING ChangeLog README $RPM_BUILD_ROOT%{prefix}/pandora_server/
|
cp -aRf AUTHORS COPYING ChangeLog README $RPM_BUILD_ROOT%{prefix}/pandora_server/
|
||||||
cp -aRf pandora_server $RPM_BUILD_ROOT/etc/init.d/
|
|
||||||
|
cp -aRf util/pandora_server $RPM_BUILD_ROOT/etc/init.d/
|
||||||
cp -aRf util/tentacle_serverd $RPM_BUILD_ROOT/etc/init.d/
|
cp -aRf util/tentacle_serverd $RPM_BUILD_ROOT/etc/init.d/
|
||||||
|
|
||||||
%clean
|
%clean
|
||||||
|
@ -59,15 +59,15 @@ install () {
|
|||||||
echo "The complete installation guide is at: "http://www.openideas.info/wiki/index.php?title=Pandora_2.0:Documentation_en:Install_Server#Pandora_FMS_Server_installation" "
|
echo "The complete installation guide is at: "http://www.openideas.info/wiki/index.php?title=Pandora_2.0:Documentation_en:Install_Server#Pandora_FMS_Server_installation" "
|
||||||
echo " "
|
echo " "
|
||||||
echo "Debian-based distribution do:"
|
echo "Debian-based distribution do:"
|
||||||
echo " $ apt-get install libdate-manip-perl snmp snmpd libsnmp-perl libtime-format-perl libxml-simple-perl libnetaddr-ip-perl libdbi-perl libxml-simple-perl libnetaddr-ip-perl libhtml-parser-perl wmi-client xprobe2 libmail-sendmail-perl"
|
echo " $ apt-get install snmp snmpd libtime-format-perl libxml-simple-perl libnetaddr-ip-perl libdbi-perl libxml-simple-perl libnetaddr-ip-perl libhtml-parser-perl wmi-client xprobe2 libmail-sendmail-perl"
|
||||||
echo " "
|
echo " "
|
||||||
echo "RPM distribution do"
|
echo "RPM distribution do"
|
||||||
echo " "
|
echo " "
|
||||||
echo " $ yum perl-XML-SAX* perl-Tie* perl-XML-Simple* perl-IO-Socket* perl-Time-modules* perl-NetAddr-IP* perl-GD* perl-DateTime* perl-ExtUtils perl-DBI perl-Date-Manip perl-SNMP"
|
echo " $ yum perl-XML-SAX* perl-Tie* perl-XML-Simple* perl-IO-Socket* perl-Time-modules* perl-NetAddr-IP* perl-DateTime* perl-ExtUtils perl-DBI"
|
||||||
echo " "
|
echo " "
|
||||||
echo "To get it from source through CPAN do"
|
echo "To get it from source through CPAN do"
|
||||||
echo " "
|
echo " "
|
||||||
echo " $ cpan Digest::MD5 Time::Local DBI threads threads::shared IO::Socket Time::HiRes Time::Format NetAddr::IP Mail::Sendmail Net::Traceroute::PurePerl HTML::Entities Date::Manip"
|
echo " $ cpan Digest::MD5 Time::Local DBI XML::Simple IO::Socket Time::HiRes Time::Format NetAddr::IP Mail::Sendmail Net::Traceroute::PurePerl HTML::Entities"
|
||||||
echo " "
|
echo " "
|
||||||
rm output
|
rm output
|
||||||
else
|
else
|
||||||
@ -111,7 +111,7 @@ install () {
|
|||||||
then
|
then
|
||||||
chown -R pandora:www-data /var/spool/pandora/
|
chown -R pandora:www-data /var/spool/pandora/
|
||||||
else
|
else
|
||||||
chown -R pandora:www /var/spool/pandora/
|
chown -R pandora:www /var/spool/pandora/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Creating setup directory in /etc/pandora"
|
echo "Creating setup directory in /etc/pandora"
|
||||||
@ -126,7 +126,7 @@ install () {
|
|||||||
chmod 770 /etc/pandora/pandora_server.conf
|
chmod 770 /etc/pandora/pandora_server.conf
|
||||||
|
|
||||||
echo "Copying the daemon script into /etc/init.d/pandora_server"
|
echo "Copying the daemon script into /etc/init.d/pandora_server"
|
||||||
cp pandora_server /etc/init.d/
|
cp util/pandora_server /etc/init.d/
|
||||||
|
|
||||||
if [ "$DISTRO" == "UBUNTU" ]
|
if [ "$DISTRO" == "UBUNTU" ]
|
||||||
then
|
then
|
||||||
@ -138,14 +138,6 @@ install () {
|
|||||||
ln -s /etc/init.d/pandora_server /etc/rc.d/rc$INITLV.d/S90pandora_server
|
ln -s /etc/init.d/pandora_server /etc/rc.d/rc$INITLV.d/S90pandora_server
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Creating links for /usr/local/bin/pandora_server"
|
|
||||||
if [ -e /usr/local/bin/pandora_server ]
|
|
||||||
then
|
|
||||||
ln -s /usr/local/bin/pandora_server /usr/bin/pandora_server 2> /dev/null
|
|
||||||
else
|
|
||||||
ln -s /usr/bin/pandora_server /usr/local/bin/pandora_server 2> /dev/null
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Creating logrotate.d entry for Pandora FMS log management"
|
echo "Creating logrotate.d entry for Pandora FMS log management"
|
||||||
cp util/pandora_logrotate /etc/logrotate.d/pandora
|
cp util/pandora_logrotate /etc/logrotate.d/pandora
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ use PandoraFMS::Tools;
|
|||||||
use PandoraFMS::DB;
|
use PandoraFMS::DB;
|
||||||
|
|
||||||
# version: define la version actual del programa
|
# version: define la version actual del programa
|
||||||
my $version = "2.1 PS090105";
|
my $version = "3.0 PS090915";
|
||||||
|
|
||||||
# Setup variables
|
# Setup variables
|
||||||
my $dirname="";
|
my $dirname="";
|
||||||
@ -86,9 +86,6 @@ sub pandora_purgedb {
|
|||||||
my $ulimit_timestamp = &UnixDate("today","%s") - (86400 * $days);
|
my $ulimit_timestamp = &UnixDate("today","%s") - (86400 * $days);
|
||||||
my $limit_timestamp = DateCalc("today","-$days days",\$err);
|
my $limit_timestamp = DateCalc("today","-$days days",\$err);
|
||||||
|
|
||||||
print "[PURGE] Deleting old access data (More than 24hr) \n";
|
|
||||||
$dbh->do("DELETE FROM tagent_access WHERE utimestamp < '$ulimit_access_timestamp'");
|
|
||||||
|
|
||||||
print "[PURGE] Deleting old event data (More than $config_days_purge days)... \n";
|
print "[PURGE] Deleting old event data (More than $config_days_purge days)... \n";
|
||||||
$dbh->do("DELETE FROM tevento WHERE utimestamp < '$ulimit_timestamp'");
|
$dbh->do("DELETE FROM tevento WHERE utimestamp < '$ulimit_timestamp'");
|
||||||
|
|
||||||
@ -117,6 +114,9 @@ sub pandora_purgedb {
|
|||||||
print "[PURGE] Delete old data from SNMP Traps \n";
|
print "[PURGE] Delete old data from SNMP Traps \n";
|
||||||
$dbh->do ("DELETE FROM ttrap WHERE timestamp < '$limit_timestamp'");
|
$dbh->do ("DELETE FROM ttrap WHERE timestamp < '$limit_timestamp'");
|
||||||
|
|
||||||
|
print "[PURGE] Deleting old access data (More than 24hr) \n";
|
||||||
|
$dbh->do("DELETE FROM tagent_access WHERE utimestamp < '$ulimit_access_timestamp'");
|
||||||
|
|
||||||
$dbh->disconnect();
|
$dbh->disconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -251,7 +251,7 @@ sub pandora_compactdb {
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
sub pandora_init {
|
sub pandora_init {
|
||||||
print "\nPandora FMS DB Tool $version Copyright (c) 2004-2008 Sancho Lerena\n";
|
print "\nPandora FMS DB Tool $version Copyright (c) 2004-2008 Artica ST\n";
|
||||||
print "This program is Free Software, licensed under the terms of GPL License v2\n";
|
print "This program is Free Software, licensed under the terms of GPL License v2\n";
|
||||||
print "You can download latest versions and documentation at http://www.pandorafms.org\n";
|
print "You can download latest versions and documentation at http://www.pandorafms.org\n";
|
||||||
|
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
# Pandora FMS Server, startup script
|
# Pandora FMS Server, startup script
|
||||||
# Copyright (c) 2006-2009 Sancho Lerena, <sancho.lerena@artica.es>
|
# Copyright (c) 2006-2009 Sancho Lerena, <sancho.lerena@artica.es>
|
||||||
# Linux Version (generic), for SuSe and Debian/Ubuntu.
|
# Linux Version (generic), for SuSe, Debian and Ubuntu.
|
||||||
# other Linux distros could not work properly without modifications
|
# other Linux distros could not work properly without modifications
|
||||||
# v3.0 Build 090810
|
# v3.0 Build 090915
|
||||||
# http://www.pandorafms.com
|
# http://www.pandorafms.com
|
||||||
|
|
||||||
### BEGIN INIT INTO
|
### BEGIN INIT INTO
|
||||||
@ -25,7 +25,7 @@ PANDORA_DAEMON=/usr/local/bin/pandora_server
|
|||||||
# This function replace pidof, not working in the same way in different linux distros
|
# This function replace pidof, not working in the same way in different linux distros
|
||||||
|
|
||||||
function pidof_pandora () (
|
function pidof_pandora () (
|
||||||
PANDORA_PID=`ps aux | grep $PANDORA_DAEMON | grep -v grep | tail -1 | awk '{ print $2 }'`
|
PANDORA_PID=`ps aux | grep $PANDORA_DAEMON $PANDORA_HOME| grep -v grep | tail -1 | awk '{ print $2 }'`
|
||||||
echo $PANDORA_PID
|
echo $PANDORA_PID
|
||||||
)
|
)
|
||||||
|
|
85
pandora_server/util/plugin/pandora_loadgen.pl
Normal file
85
pandora_server/util/plugin/pandora_loadgen.pl
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
|
##################################################################################
|
||||||
|
# Fake data generator Plugin for Pandora FMS 3.0
|
||||||
|
# (c) Sancho Lerena 2009, slerena@gmail.com
|
||||||
|
# idea from Miguel de Dios, sorry dude, I made it first ! ;-))
|
||||||
|
#
|
||||||
|
# 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; version 2
|
||||||
|
# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
##################################################################################
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use Getopt::Long;
|
||||||
|
|
||||||
|
my $max = 10;
|
||||||
|
my $min = 0;
|
||||||
|
my $alphanumeric = 0;
|
||||||
|
|
||||||
|
# -- Subroutine / Functions ------------------------------------
|
||||||
|
|
||||||
|
sub help {
|
||||||
|
print "\nFake data generator plugin for Pandora FMS\n\n";
|
||||||
|
print "Syntax: \n\n\t ./pandora_loadgen.pl [-string] -max <max_value> -min <min_value> \n\n";
|
||||||
|
print "Sample usage:\n\n\t ./pandora_loadgen.pl -t 0 -max 100 -min 0\n\n";
|
||||||
|
print "\tIf -string provided, it generates an alphanumeric string with min-max lenght\n";
|
||||||
|
print "\totherwise it generates a random integer from min to max\n\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
sub pandora_trash_ascii {
|
||||||
|
my $config_depth = $_[0];
|
||||||
|
my $a;
|
||||||
|
my $output = "";
|
||||||
|
|
||||||
|
for ($a=0;$a<$config_depth;$a++){
|
||||||
|
$output = $output.chr(int(rand(25)+97));
|
||||||
|
}
|
||||||
|
return $output
|
||||||
|
}
|
||||||
|
|
||||||
|
sub pandora_random {
|
||||||
|
my $min = $_[0];
|
||||||
|
my $max = $_[1];
|
||||||
|
|
||||||
|
return int(rand($max+1) + $min);
|
||||||
|
}
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
# Main code -------------------------------------------------------------
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
|
||||||
|
if ($#ARGV == -1){
|
||||||
|
help();
|
||||||
|
}
|
||||||
|
|
||||||
|
GetOptions(
|
||||||
|
"" => sub { help() },
|
||||||
|
"h" => sub { help() },
|
||||||
|
"help" => sub { help() },
|
||||||
|
"string+" => \$alphanumeric,
|
||||||
|
"max=i" => \$max,
|
||||||
|
"min=i" => \$min
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($alphanumeric == 1){
|
||||||
|
print pandora_trash_ascii (pandora_random($min,$max));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print pandora_random ($min, $max);
|
||||||
|
}
|
||||||
|
exit 0;
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
# End main code ---------------------------------------------------------
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
|
208
pandora_server/util/plugin/pandora_server_status.pl
Executable file
208
pandora_server/util/plugin/pandora_server_status.pl
Executable file
@ -0,0 +1,208 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
|
##################################################################################
|
||||||
|
# Server status Plugin for Pandora FMS 3.0
|
||||||
|
# (c) Sancho Lerena 2009, slerena@gmail.com
|
||||||
|
#
|
||||||
|
# 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; version 2
|
||||||
|
# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
##################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use Getopt::Long;
|
||||||
|
use DBI;
|
||||||
|
|
||||||
|
my %pa_config;
|
||||||
|
my $cfgfile = "/etc/pandora/pandora_server.conf";
|
||||||
|
my $servername = "";
|
||||||
|
my $servertype = 0;
|
||||||
|
my $timeout = 10;
|
||||||
|
my $queuedmodules = 0;
|
||||||
|
my $module_result;
|
||||||
|
my $sql_query;
|
||||||
|
|
||||||
|
# -- Subroutine / Functions ------------------------------------
|
||||||
|
|
||||||
|
sub die_return {
|
||||||
|
print "0";
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub die_return_timeout {
|
||||||
|
print "0";
|
||||||
|
exit -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub help {
|
||||||
|
print "\nPandora FMS Plugin for Pandora FMS server check\n\n";
|
||||||
|
print "Syntax: \n\n\t ./pandora_server_status.pl [-c /etc/pandora/pandora_server.conf] -t <server_type> -n <server_name> [ -q ] \n\n";
|
||||||
|
print "\t -q Return queued modules for given server name & type. \n";
|
||||||
|
print "\t -c It's optional, by default read Pandora FMS config file at /etc/pandora\n";
|
||||||
|
print "\n\t If -q is not given, it reports 1 if server is OK, or 0 if it's down\n\n";
|
||||||
|
print "Sample usage:\n\n\t ./pandora_server_status.pl -t 3 -n myserver\n\n";
|
||||||
|
print "Server types:
|
||||||
|
\t\t--0 dataserver
|
||||||
|
\t\t--1 network
|
||||||
|
\t\t--2 snmp trap console
|
||||||
|
\t\t--3 recon
|
||||||
|
\t\t--4 plugin
|
||||||
|
\t\t--5 prediction
|
||||||
|
\t\t--6 wmi
|
||||||
|
\t\t--7 export
|
||||||
|
\t\t--8 inventory
|
||||||
|
\t\t--9 web \n\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
sub clean_blank {
|
||||||
|
my $input = $_[0];
|
||||||
|
$input =~ s/\s//g;
|
||||||
|
return $input;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub load_config {
|
||||||
|
my $cfgfile = $_[0];
|
||||||
|
my $pa_config = $_[1];
|
||||||
|
my $buffer_line;
|
||||||
|
my @command_line;
|
||||||
|
my $tbuf;
|
||||||
|
|
||||||
|
# Collect items from config file and put in an array
|
||||||
|
open (CFG, "< $cfgfile");
|
||||||
|
while (<CFG>){
|
||||||
|
$buffer_line = $_;
|
||||||
|
if ($buffer_line =~ /^[a-zA-Z]/){ # begins with letters
|
||||||
|
if ($buffer_line =~ m/([\w\-\_\.]+)\s([0-9\w\-\_\.\/\?\&\=\)\(\_\-\!\*\@\#\%\$\~\"\']+)/){
|
||||||
|
push @command_line, $buffer_line;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close (CFG);
|
||||||
|
|
||||||
|
# Process this array with commandline like options
|
||||||
|
# Process input parameters
|
||||||
|
|
||||||
|
my @args = @command_line;
|
||||||
|
my $parametro;
|
||||||
|
my $ltotal=$#args;
|
||||||
|
my $ax;
|
||||||
|
|
||||||
|
# Has read setup file ok ?
|
||||||
|
if ( $ltotal == 0 ) {
|
||||||
|
print "[ERROR] No valid setup tokens readed in $cfgfile";
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
for ($ax=0;$ax<=$ltotal;$ax++){
|
||||||
|
$parametro = $args[$ax];
|
||||||
|
|
||||||
|
if ($parametro =~ m/^incomingdir\s(.*)/i) {
|
||||||
|
$tbuf= clean_blank($1);
|
||||||
|
if ($tbuf =~ m/^\.(.*)/){
|
||||||
|
$pa_config->{"incomingdir"} =$pa_config->{"basepath"}.$1;
|
||||||
|
} else {
|
||||||
|
$pa_config->{"incomingdir"} = $tbuf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
elsif ($parametro =~ m/^log_file\s(.*)/i) {
|
||||||
|
$tbuf= clean_blank($1);
|
||||||
|
if ($tbuf =~ m/^\.(.*)/){
|
||||||
|
$pa_config->{"logfile"} = $pa_config->{"basepath"}.$1;
|
||||||
|
} else {
|
||||||
|
$pa_config->{"logfile"} = $tbuf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
elsif ($parametro =~ m/^errorlog_file\s(.*)/i) {
|
||||||
|
$tbuf= clean_blank($1);
|
||||||
|
if ($tbuf =~ m/^\.(.*)/){
|
||||||
|
$pa_config->{"errorlogfile"} = $pa_config->{"basepath"}.$1;
|
||||||
|
} else {
|
||||||
|
$pa_config->{"errorlogfile"} = $tbuf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
elsif ($parametro =~ m/^dbname\s(.*)/i) {
|
||||||
|
$pa_config->{'dbname'}= clean_blank($1);
|
||||||
|
}
|
||||||
|
elsif ($parametro =~ m/^dbuser\s(.*)/i) {
|
||||||
|
$pa_config->{'dbuser'}= clean_blank($1);
|
||||||
|
}
|
||||||
|
elsif ($parametro =~ m/^dbpass\s(.*)/i) {
|
||||||
|
$pa_config->{'dbpass'}= clean_blank($1);
|
||||||
|
}
|
||||||
|
elsif ($parametro =~ m/^dbhost\s(.*)/i) {
|
||||||
|
$pa_config->{'dbhost'}= clean_blank($1);
|
||||||
|
}
|
||||||
|
} # end of loop for parameter #
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
# Main code -------------------------------------------------------------
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
|
||||||
|
if ($#ARGV == -1){
|
||||||
|
help();
|
||||||
|
}
|
||||||
|
|
||||||
|
GetOptions(
|
||||||
|
"" => sub { help() },
|
||||||
|
"h" => sub { help() },
|
||||||
|
"help" => sub { help() },
|
||||||
|
"c=s" => \$cfgfile,
|
||||||
|
"n=s" => \$servername,
|
||||||
|
"q+" => \$queuedmodules,
|
||||||
|
"t=i" => \$servertype
|
||||||
|
);
|
||||||
|
|
||||||
|
load_config ($cfgfile, \%pa_config);
|
||||||
|
|
||||||
|
alarm($timeout);
|
||||||
|
|
||||||
|
$SIG{ALRM} = sub { die_return_timeout(); };
|
||||||
|
|
||||||
|
eval {
|
||||||
|
|
||||||
|
# Connect to MySQL
|
||||||
|
my $dbh = DBI->connect("DBI:mysql:".$pa_config{'dbname'}.":".$pa_config{"dbhost"}.":3306", $pa_config{"dbuser"}, $pa_config{"dbpass"}, { RaiseError => 1, AutoCommit => 1 });
|
||||||
|
return undef unless defined ($dbh);
|
||||||
|
|
||||||
|
if ($queuedmodules == 0){
|
||||||
|
$sql_query = "SELECT status FROM tserver WHERE server_type = $servertype and name = '$servername'";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$sql_query = "SELECT queued_modules FROM tserver WHERE server_type = $servertype and name = '$servername'";
|
||||||
|
}
|
||||||
|
|
||||||
|
my $idag = $dbh->prepare($sql_query);
|
||||||
|
$idag ->execute;
|
||||||
|
my @datarow;
|
||||||
|
if ($idag->rows != 0) {
|
||||||
|
@datarow = $idag->fetchrow_array();
|
||||||
|
print $datarow[0] ."\n";
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
print "0\n";
|
||||||
|
};
|
||||||
|
|
||||||
|
if ($@){
|
||||||
|
die_return_timeout();
|
||||||
|
}
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
# End main code ---------------------------------------------------------
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user