2006-09-29 Raul Mateos <raulofpandora@gmail.com>

* pandora_server/bin/*.pl and *.pm: Updated some comments from
	Spanish to English. Update build date.

git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@197 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
raulmateos 2006-09-29 12:29:36 +00:00
parent 7f4a04d6a6
commit ff682a8730
7 changed files with 211 additions and 208 deletions

View File

@ -1,3 +1,8 @@
2006-09-29 Raul Mateos <raulofpandora@gmail.com>
* pandora_server/bin/*.pl and *.pm: Updated some comments from
Spanish to English. Update build date.
2006-09-13 Sancho Lerena <slerena@artica.es> 2006-09-13 Sancho Lerena <slerena@artica.es>
* pandora_network.pl: Fixed problems with OID index. Perl needs to * pandora_network.pl: Fixed problems with OID index. Perl needs to
@ -5,5 +10,3 @@
SNMPv2-MIB::sysDescr. Also, other numerical indexes are referenced SNMPv2-MIB::sysDescr. Also, other numerical indexes are referenced
different from system SNMP or PHP. IF-MIB::ifDescr.3 is different from system SNMP or PHP. IF-MIB::ifDescr.3 is
IF-MIB::ifDescr.2 for PERL's SNMP. IF-MIB::ifDescr.2 for PERL's SNMP.

View File

@ -1,7 +1,7 @@
package pandora_config; package pandora_config;
################################################################################## ##########################################################################
# Pandora Config package # Pandora Config package
################################################################################## ##########################################################################
# Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com # Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com
# Copyright (c) 2005-2006 Artica Soluciones Tecnol<6F>icas S.L # Copyright (c) 2005-2006 Artica Soluciones Tecnol<6F>icas S.L
# #
@ -16,7 +16,7 @@ package pandora_config;
#You should have received a copy of the GNU General Public License #You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software #along with this program; if not, write to the Free Software
#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
################################################################################## ##########################################################################
use warnings; use warnings;
@ -36,17 +36,17 @@ our @EXPORT = qw( pandora_help_screen
# There is no global vars, all variables (setup) passed as hash reference # There is no global vars, all variables (setup) passed as hash reference
# 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 = "1.2 Beta2"; my $pandora_version = "1.2 Beta 3";
my $pandora_build="PS60629"; my $pandora_build="PS060929";
# Setup hash # Setup hash
my %pa_config; my %pa_config;
# Delaracion de funciones publicas # Public functions
############################################################################## ##########################################################################
# SUB pandora_help_screen() # SUB pandora_help_screen()
# Show a help screen an exits # Show a help screen an exits
############################################################################## ##########################################################################
sub help_screen { sub help_screen {
printf "\n\nSyntax: \n pandora_xxxxxxx.pl <fullpathname to PANDORA HOME directory> [ options ] \n\n"; printf "\n\nSyntax: \n pandora_xxxxxxx.pl <fullpathname to PANDORA HOME directory> [ options ] \n\n";
@ -59,10 +59,10 @@ sub help_screen {
exit; exit;
} }
############################################################################## ##########################################################################
# SUB pandora_init ( %pandora_cfg ) # SUB pandora_init ( %pandora_cfg )
# Makes the initial parameter parsing, initializing and error checking # Makes the initial parameter parsing, initializing and error checking
############################################################################## ##########################################################################
sub pandora_init { sub pandora_init {
my $pa_config = $_[0]; my $pa_config = $_[0];
@ -102,9 +102,9 @@ sub pandora_init {
} }
} }
############################################################################## ##########################################################################
# Read external configuration file # Read external configuration file
############################################################################## ##########################################################################
sub pandora_loadconfig { sub pandora_loadconfig {
my $pa_config = $_[0]; my $pa_config = $_[0];
@ -145,7 +145,8 @@ sub pandora_loadconfig {
} }
# Check for file # Check for file
if ( ! -e $archivo_cfg ) { if ( ! -e $archivo_cfg ) {
printf "\n[ERROR] Cannot open configuration file at $archivo_cfg. \nPlease specify a valid Pandora Home Directory in command line. \n"; printf "\n[ERROR] Cannot open configuration file at $archivo_cfg. \n";
printf " Please specify a valid Pandora Home Directory in command line. \n";
exit 1; exit 1;
} }
# Collect items from config file and put in an array # Collect items from config file and put in an array

View File

@ -1,9 +1,9 @@
package pandora_db; package pandora_db;
################################################################################## ##########################################################################
# Pandora Database Package # Pandora Database Package
################################################################################## ##########################################################################
# Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com # Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com
# Copyright (c) 2005-2006 Artica Soluciones Tecnol<EFBFBD>icas S.L # Copyright (c) 2005-2006 Artica Soluciones Tecnologicas S.L
# #
#This program is free software; you can redistribute it and/or #This program is free software; you can redistribute it and/or
#modify it under the terms of the GNU General Public License #modify it under the terms of the GNU General Public License
@ -16,7 +16,7 @@ package pandora_db;
#You should have received a copy of the GNU General Public License #You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software #along with this program; if not, write to the Free Software
#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
################################################################################## ##########################################################################
use warnings; use warnings;
use Time::Local; use Time::Local;
@ -68,11 +68,11 @@ our @EXPORT = qw( crea_agente_modulo
# 'Crea' in spanish means 'create' # 'Crea' in spanish means 'create'
# 'Dame' in spanish means 'give' # 'Dame' in spanish means 'give'
################################################################################# ##########################################################################
## SUB pandora_calcula_alerta ## SUB pandora_calcula_alerta
## (paconfig, timestamp,nombre_agente,tipo_modulo,nombre_modulo,datos,dbh) ## (paconfig, timestamp,nombre_agente,tipo_modulo,nombre_modulo,datos,dbh)
## Given a datamodule, generate alert if needed ## Given a datamodule, generate alert if needed
################################################################################## ##########################################################################
sub pandora_calcula_alerta (%$$$$$$) { sub pandora_calcula_alerta (%$$$$$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
@ -89,13 +89,13 @@ sub pandora_calcula_alerta (%$$$$$$) {
my $max; my $max;
my $min; # for calculate max & min to generate ALERTS my $min; # for calculate max & min to generate ALERTS
# Obtemos los ID's a traves del paquete de datos # Get IDs from data packet
$id_agente = dame_agente_id($pa_config, $nombre_agente, $dbh); $id_agente = dame_agente_id($pa_config, $nombre_agente, $dbh);
$id_modulo = dame_modulo_id($pa_config, $tipo_modulo,$dbh); $id_modulo = dame_modulo_id($pa_config, $tipo_modulo,$dbh);
$id_agente_modulo = dame_agente_modulo_id($pa_config, $id_agente,$id_modulo,$nombre_modulo,$dbh); $id_agente_modulo = dame_agente_modulo_id($pa_config, $id_agente,$id_modulo,$nombre_modulo,$dbh);
logger($pa_config, "DEBUG: calcula_alerta() Calculado id_agente_modulo a $id_agente_modulo",3); logger($pa_config, "DEBUG: calcula_alerta() Calculado id_agente_modulo a $id_agente_modulo",3);
# Buscamos si existe una alerta definida para esta combinacion agente/modulo # If any alert from this combinatio of agent/module
my $query_idag = "select * from talerta_agente_modulo where id_agente_modulo = '$id_agente_modulo'"; my $query_idag = "select * from talerta_agente_modulo where id_agente_modulo = '$id_agente_modulo'";
my $s_idag = $dbh->prepare($query_idag); my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute; $s_idag ->execute;
@ -156,7 +156,7 @@ sub pandora_calcula_alerta (%$$$$$$) {
# Check timegap # Check timegap
my $fecha_ultima_alerta = ParseDate($last_fired); my $fecha_ultima_alerta = ParseDate($last_fired);
my $fecha_actual = ParseDate( $timestamp ); my $fecha_actual = ParseDate( $timestamp );
my $ahora_mysql = &UnixDate("today","%Y-%m-%d %H:%M:%S"); # If we need to update MYSQL ast_fired will use $ahora_mysql my $ahora_mysql = &UnixDate("today","%Y-%m-%d %H:%M:%S"); # If we need to update MYSQL ast_fired will use $ahora_mysql
my $time_threshold = $threshold; my $time_threshold = $threshold;
my $err; my $flag; my $err; my $flag;
my $fecha_limite = DateCalc($fecha_ultima_alerta,"+ $time_threshold seconds",\$err); my $fecha_limite = DateCalc($fecha_ultima_alerta,"+ $time_threshold seconds",\$err);
@ -258,10 +258,10 @@ sub pandora_calcula_alerta (%$$$$$$) {
################################################################################# ##########################################################################
## SUB execute_alert (id_alert, field1, field2, field3, agent, timestamp, data) ## SUB execute_alert (id_alert, field1, field2, field3, agent, timestamp, data)
## Do a execution of given alert with this parameters ## Do a execution of given alert with this parameters
################################################################################## ##########################################################################
sub execute_alert (%$$$$$$$$) { sub execute_alert (%$$$$$$$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
@ -324,10 +324,10 @@ sub execute_alert (%$$$$$$$$) {
} }
################################################################################# ##########################################################################
## SUB pandora_writestate (pa_config, nombre_agente,tipo_modulo,nombre_modulo,valor_datos, estado) ## SUB pandora_writestate (pa_config, nombre_agente,tipo_modulo,nombre_modulo,valor_datos, estado)
## Alter data, chaning status of modules in state table ## Alter data, chaning status of modules in state table
################################################################################## ##########################################################################
sub pandora_writestate (%$$$$$$) { sub pandora_writestate (%$$$$$$) {
# my $timestamp = $_[0]; # my $timestamp = $_[0];
@ -343,9 +343,9 @@ sub pandora_writestate (%$$$$$$) {
my $timestamp = &UnixDate("today","%Y-%m-%d %H:%M:%S"); my $timestamp = &UnixDate("today","%Y-%m-%d %H:%M:%S");
my @data; my @data;
my $cambio = 0; my $id_grupo; my $cambio = 0; my $id_grupo;
# Obtenemos los identificadores # Get id
# OJO; no controlamos si los valores pasados como cadena son validos. # BE CAREFUL: We don't verify the strings chains
# PENDIENTE: Comprobacion de errores aqui. # TO DO: Verify errors
my $id_agente = dame_agente_id($pa_config,$nombre_agente,$dbh); my $id_agente = dame_agente_id($pa_config,$nombre_agente,$dbh);
my $id_modulo = dame_modulo_id($pa_config,$tipo_modulo,$dbh); my $id_modulo = dame_modulo_id($pa_config,$tipo_modulo,$dbh);
my $id_agente_modulo = dame_agente_modulo_id($pa_config,$id_agente, $id_modulo, $nombre_modulo,$dbh); my $id_agente_modulo = dame_agente_modulo_id($pa_config,$id_agente, $id_modulo, $nombre_modulo,$dbh);
@ -353,7 +353,7 @@ sub pandora_writestate (%$$$$$$) {
goto fin_pandora_writestate; goto fin_pandora_writestate;
} }
# Check alert subroutine # Check alert subroutine
eval { # Hacemos la comprobacion de las alertas aqui. OJO ! eval {
# Alerts checks for Agents, only for master servers # Alerts checks for Agents, only for master servers
if ($pa_config->{"pandora_master"} == 1){ if ($pa_config->{"pandora_master"} == 1){
pandora_calcula_alerta($pa_config, $timestamp, $nombre_agente, $tipo_modulo, $nombre_modulo, $datos, $dbh); pandora_calcula_alerta($pa_config, $timestamp, $nombre_agente, $tipo_modulo, $nombre_modulo, $datos, $dbh);
@ -363,8 +363,8 @@ sub pandora_writestate (%$$$$$$) {
logger($pa_config, "ERROR: Error in SUB calcula_alerta(). ModuleName: $nombre_modulo ModuleType: $tipo_modulo AgentName: $nombre_agente",1); logger($pa_config, "ERROR: Error in SUB calcula_alerta(). ModuleName: $nombre_modulo ModuleType: $tipo_modulo AgentName: $nombre_agente",1);
logger($pa_config, "ERROR Code: $@",1) logger($pa_config, "ERROR Code: $@",1)
} }
# $id_agente apunta al ID del agente que queremos actualizar".dame_nombreagente_agentemodulo ($id_agente_modulo)." # $id_agente is agent ID to update ".dame_nombreagente_agentemodulo ($id_agente_modulo)."
# Vamos a ver si existe una entrada en la tabla tagente_estado # Let's see if there is any entry at tagente_estado table
my $idages = "select * from tagente_estado where id_agente_modulo = $id_agente_modulo"; my $idages = "select * from tagente_estado where id_agente_modulo = $id_agente_modulo";
my $s_idages = $dbh->prepare($idages); my $s_idages = $dbh->prepare($idages);
$s_idages ->execute; $s_idages ->execute;
@ -399,9 +399,9 @@ sub pandora_writestate (%$$$$$$) {
fin_pandora_writestate: fin_pandora_writestate:
} }
################################################################################# ##########################################################################
#### MODULOS implementados en Pandora #### MODULOS implementados en Pandora
################################################################################# ##########################################################################
# ----------------------------------------+ # ----------------------------------------+
# Modulos genericos de Pandora | # Modulos genericos de Pandora |
@ -424,10 +424,10 @@ fin_pandora_writestate:
# generic_data_string. Store a string, max 255 chars. # generic_data_string. Store a string, max 255 chars.
################################################################################# ##########################################################################
## SUB pandora_accessupdate (pa_config, id_agent, dbh) ## SUB pandora_accessupdate (pa_config, id_agent, dbh)
## Update agent access table ## Update agent access table
################################################################################## ##########################################################################
sub pandora_accessupdate (%$$) { sub pandora_accessupdate (%$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
@ -461,10 +461,10 @@ sub pandora_accessupdate (%$$) {
} }
} }
################################################################################# ##########################################################################
## SUB module_generic_proc (param_1, param_2, param_3) ## SUB module_generic_proc (param_1, param_2, param_3)
## Procesa datos genericos sobre un proceso ## Procesa datos genericos sobre un proceso
################################################################################## ##########################################################################
## param_1 : Nombre de la estructura contenedora de datos (XML) ## param_1 : Nombre de la estructura contenedora de datos (XML)
## paran_2 : Timestamp del paquete de datos ## paran_2 : Timestamp del paquete de datos
## param_3 : Agent name ## param_3 : Agent name
@ -513,13 +513,13 @@ sub module_generic_proc (%$$$$$) {
} }
} }
################################################################################# ##########################################################################
## SUB module_generic_data (par1, par2) ## SUB module_generic_data (param_1, param_2,param_3, param_4)
## Procesa datos generados por Modulo de adquisicion de datos numericos ## Process generated data form numeric data module acquire
################################################################################## ##########################################################################
## param_1 : Nombre de la estructura contenedora de datos (XML) ## param_1 : XML name
## paran_2 : Timestamp del paquete de datos ## paran_2 : Timestamp
## param_3 : Nombre del agente ## param_3 : Agent name
## param_4 : Module type ## param_4 : Module type
sub module_generic_data (%$$$$$) { sub module_generic_data (%$$$$$) {
@ -561,13 +561,13 @@ sub module_generic_data (%$$$$$) {
} }
} }
################################################################################# ##########################################################################
## SUB module_generic_data_inc (par1, par2) ## SUB module_generic_data_inc (param_1, param_2,param_3, param_4)
## Procesa datos generados por Modulo de adquisicion de datos numericos incrementales ## Process generated data form incremental numeric data module acquire
################################################################################## ##########################################################################
## param_1 : Nombre de la estructura contenedora de datos (XML) ## param_1 : XML name
## paran_2 : Timestamp del paquete de datos ## paran_2 : Timestamp
## param_3 : Nombre del agente ## param_3 : Agent name
## param_4 : Module type ## param_4 : Module type
sub module_generic_data_inc (%$$$$$) { sub module_generic_data_inc (%$$$$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
@ -577,7 +577,7 @@ sub module_generic_data_inc (%$$$$$) {
my $module_type = $_[4]; my $module_type = $_[4];
my $dbh = $_[5]; my $dbh = $_[5];
# Leemos datos de la estructura # Read structure data
my $m_name = $datos->{name}->[0]; my $m_name = $datos->{name}->[0];
my $a_desc = $datos->{description}->[0]; my $a_desc = $datos->{description}->[0];
my $m_data = $datos->{data}->[0]; my $m_data = $datos->{data}->[0];
@ -642,7 +642,7 @@ sub module_generic_data_inc (%$$$$$) {
if ($no_existe == 1){ if ($no_existe == 1){
my $query = "insert into tagente_datos_inc (id_agente_modulo,datos,timestamp) VALUES ($id_agente_modulo,'$m_data','$timestamp')"; my $query = "insert into tagente_datos_inc (id_agente_modulo,datos,timestamp) VALUES ($id_agente_modulo,'$m_data','$timestamp')";
$dbh->do($query); $dbh->do($query);
} else { # Si existe, modificamos } else { # If exists, modfy
if ($diferencia > 0) { if ($diferencia > 0) {
my $query_idag = "update tagente_datos_inc set datos = '$m_data' where id_agente_modulo = $id_agente_modulo"; my $query_idag = "update tagente_datos_inc set datos = '$m_data' where id_agente_modulo = $id_agente_modulo";
$s_idag = $dbh->prepare($query_idag); $s_idag = $dbh->prepare($query_idag);
@ -671,14 +671,15 @@ sub module_generic_data_inc (%$$$$$) {
} }
} }
#################################################################################
## SUB module_generic_data_string (par1, par2) ##########################################################################
## Procesa datos generados por el modulo de adquisicion de datos alfanumericos ## SUB module_generic_data (param_1, param_2,param_3, param_4)
################################################################################## ## Process generated data form alfanumeric data module acquire
## param_1 : Nombre de la estructura contenedora de datos (XML) ##########################################################################
## paran_2 : Timestamp del paquete de datos ## param_1 : XML name
## param_3 : Nombre del agente ## paran_2 : Timestamp
## param_4 : Modyle type ## param_3 : Agent name
## param_4 : Module type
sub module_generic_data_string (%$$$$$) { sub module_generic_data_string (%$$$$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
@ -688,7 +689,7 @@ sub module_generic_data_string (%$$$$$) {
my $module_type = $_[4]; my $module_type = $_[4];
my $dbh = $_[5]; my $dbh = $_[5];
# Leemos datos de la estructura # Read Structure
my $m_name = $datos->{name}->[0]; my $m_name = $datos->{name}->[0];
my $m_data = $datos->{data}->[0]; my $m_data = $datos->{data}->[0];
my $a_desc = $datos->{description}->[0]; my $a_desc = $datos->{description}->[0];
@ -709,11 +710,11 @@ sub module_generic_data_string (%$$$$$) {
} }
################################################################################# ##########################################################################
## SUB pandora_writedata (pa_config, timestamp,nombre_agente,tipo_modulo,nombre_modulo,datos) ## SUB pandora_writedata (pa_config, timestamp,nombre_agente,tipo_modulo,nombre_modulo,datos)
## Insert data in main table: tagente_datos ## Insert data in main table: tagente_datos
################################################################################## ##########################################################################
sub pandora_writedata (%$$$$$$$$$) { sub pandora_writedata (%$$$$$$$$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
@ -841,10 +842,10 @@ sub pandora_writedata (%$$$$$$$$$) {
fin_DB_insert_datos: fin_DB_insert_datos:
} }
################################################################################# ##########################################################################
## SUB pandora_serverkeepalive (pa_config, status, dbh) ## SUB pandora_serverkeepalive (pa_config, status, dbh)
## Update server status ## Update server status
################################################################################## ##########################################################################
sub pandora_serverkeepaliver (%$) { sub pandora_serverkeepaliver (%$) {
my $pa_config= $_[0]; my $pa_config= $_[0];
my $opmode = $_[1]; # 0 dataserver, 1 network server, 2 snmp console my $opmode = $_[1]; # 0 dataserver, 1 network server, 2 snmp console
@ -881,12 +882,12 @@ sub pandora_serverkeepaliver (%$) {
} }
################################################################################# ##########################################################################
## SUB pandora_updateserver (pa_config, status, dbh) ## SUB pandora_updateserver (pa_config, status, dbh)
## Update server status ## Update server status
################################################################################## ##########################################################################
sub pandora_updateserver (%$$$) { sub pandora_updateserver (%$$$) {
my $pa_config= $_[0]; my $pa_config= $_[0];
my $servername = $_[1]; my $servername = $_[1];
my $status = $_[2]; my $status = $_[2];
my $opmode = $_[3]; # 0 dataserver, 1 network server, 2 snmp console my $opmode = $_[3]; # 0 dataserver, 1 network server, 2 snmp console
@ -932,10 +933,10 @@ sub pandora_updateserver (%$$$) {
} }
} }
################################################################################# ##########################################################################
## SUB pandora_lastagentcontact (pa_config, timestamp,nombre_agente,os_data, agent_version,interval,dbh) ## SUB pandora_lastagentcontact (pa_config, timestamp,nombre_agente,os_data, agent_version,interval,dbh)
## Update last contact field in Agent Table ## Update last contact field in Agent Table
################################################################################## ##########################################################################
sub pandora_lastagentcontact (%$$$$$$) { sub pandora_lastagentcontact (%$$$$$$) {
my $pa_config= $_[0]; my $pa_config= $_[0];
@ -962,10 +963,10 @@ sub pandora_lastagentcontact (%$$$$$$) {
$sag ->finish(); $sag ->finish();
} }
################################################################################# ##########################################################################
## SUB pandora_event (pa_config, evento, id_grupo, id_agente) ## SUB pandora_event (pa_config, evento, id_grupo, id_agente)
## Write in internal audit system an entry. ## Write in internal audit system an entry.
################################################################################## ##########################################################################
sub pandora_event (%$$$$) { sub pandora_event (%$$$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
@ -982,10 +983,10 @@ sub pandora_event (%$$$$) {
$dbh->do($query); $dbh->do($query);
} }
################################################################################# ##########################################################################
## SUB pandora_audit (pa_config, escription, name, action, pandora_dbcfg_hash) ## SUB pandora_audit (pa_config, escription, name, action, pandora_dbcfg_hash)
## Write in internal audit system an entry. ## Write in internal audit system an entry.
################################################################################## ##########################################################################
sub pandora_audit (%$$$$) { sub pandora_audit (%$$$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
my $desc = $_[1]; my $desc = $_[1];
@ -1014,10 +1015,10 @@ sub pandora_audit (%$$$$) {
} }
} }
################################################################################# ##########################################################################
## SUB dame_agente_id (nombre_agente) ## SUB dame_agente_id (nombre_agente)
## Return agent ID, use "nombre_agente" as name of agent. ## Return agent ID, use "nombre_agente" as name of agent.
################################################################################## ##########################################################################
sub dame_agente_id (%$$) { sub dame_agente_id (%$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
my $nombre_agente = $_[1]; my $nombre_agente = $_[1];
@ -1025,7 +1026,7 @@ sub dame_agente_id (%$$) {
my $id_agente;my @data; my $id_agente;my @data;
if (defined($nombre_agente)){ if (defined($nombre_agente)){
# Calculamos el ID del agente haciendo una select por su nombre. # Calculate agent ID using select by its name
my $query_idag = "select * from tagente where nombre = '$nombre_agente'"; my $query_idag = "select * from tagente where nombre = '$nombre_agente'";
my $s_idag = $dbh->prepare($query_idag); my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute; $s_idag ->execute;
@ -1042,10 +1043,10 @@ sub dame_agente_id (%$$) {
} }
} }
################################################################################# ##########################################################################
## SUB dame_server_id (pa_config, servername, dbh) ## SUB dame_server_id (pa_config, servername, dbh)
## Return serverID, using "nane" as name of server ## Return serverID, using "nane" as name of server
################################################################################## ##########################################################################
sub dame_server_id (%$$) { sub dame_server_id (%$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
my $name = $_[1]; my $name = $_[1];
@ -1066,10 +1067,10 @@ sub dame_server_id (%$$) {
return $id_server; return $id_server;
} }
################################################################################# ##########################################################################
## SUB give_networkserver_status (id_server) ## SUB give_networkserver_status (id_server)
## Return NETWORK server status given its id ## Return NETWORK server status given its id
################################################################################# ##########################################################################
sub give_networkserver_status (%$$) { sub give_networkserver_status (%$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
@ -1091,10 +1092,10 @@ sub give_networkserver_status (%$$) {
return $status; return $status;
} }
################################################################################# ##########################################################################
## SUB dame_grupo_agente (id_agente) ## SUB dame_grupo_agente (id_agente)
## Return id_group of an agent given its id ## Return id_group of an agent given its id
################################################################################# ##########################################################################
sub dame_grupo_agente (%$$) { sub dame_grupo_agente (%$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
@ -1103,7 +1104,7 @@ sub dame_grupo_agente (%$$) {
my $id_grupo; my $id_grupo;
my @data; my @data;
# Calculamos el ID del agente haciendo una select por su id # Calculate agent using select by its id
my $query_idag = "select * from tagente where id_agente = $id_agente"; my $query_idag = "select * from tagente where id_agente = $id_agente";
my $s_idag = $dbh->prepare($query_idag); my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute; $s_idag ->execute;
@ -1116,17 +1117,17 @@ sub dame_grupo_agente (%$$) {
return $id_grupo; return $id_grupo;
} }
################################################################################# ##########################################################################
## SUB dame_comando_alerta (id_alerta) ## SUB dame_comando_alerta (id_alerta)
## Return agent ID, use "nombre_agente" as name of agent. ## Return agent ID, use "nombre_agente" as name of agent.
################################################################################## ##########################################################################
sub dame_comando_alerta (%$$) { sub dame_comando_alerta (%$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
my $id_alerta = $_[1]; my $id_alerta = $_[1];
my $dbh = $_[2]; my $dbh = $_[2];
my @data; my @data;
# Calculamos el ID del agente haciendo una select por su nombre. # Calculate agent ID using select by its name
my $query_idag = "select * from talerta where id_alerta = $id_alerta"; my $query_idag = "select * from talerta where id_alerta = $id_alerta";
my $s_idag = $dbh->prepare($query_idag); my $s_idag = $dbh->prepare($query_idag);
my $comando = ""; my $comando = "";
@ -1143,10 +1144,10 @@ sub dame_comando_alerta (%$$) {
} }
################################################################################# ##########################################################################
## SUB dame_agente_nombre (id_agente) ## SUB dame_agente_nombre (id_agente)
## Return agent name, given "id_agente" ## Return agent name, given "id_agente"
################################################################################## ##########################################################################
sub dame_agente_nombre (%$$) { sub dame_agente_nombre (%$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
my $id_agente = $_[1]; my $id_agente = $_[1];
@ -1154,7 +1155,7 @@ sub dame_agente_nombre (%$$) {
my $nombre_agente; my $nombre_agente;
my @data; my @data;
# Calculamos el ID del agente haciendo una select por su nombre. # Calculate agent ID using select by its name
my $query_idag = "select * from tagente where id_agente = '$id_agente'"; my $query_idag = "select * from tagente where id_agente = '$id_agente'";
my $s_idag = $dbh->prepare($query_idag); my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute; $s_idag ->execute;
@ -1168,17 +1169,17 @@ sub dame_agente_nombre (%$$) {
} }
################################################################################# ##########################################################################
## SUB dame_modulo_id (nombre_modulo) ## SUB dame_modulo_id (nombre_modulo)
## Return module ID, given "nombre_modulo" as module name ## Return module ID, given "nombre_modulo" as module name
################################################################################## ##########################################################################
sub dame_modulo_id (%$$) { sub dame_modulo_id (%$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
my $nombre_modulo = $_[1]; my $nombre_modulo = $_[1];
my $dbh = $_[2]; my $dbh = $_[2];
my $id_modulo; my @data; my $id_modulo; my @data;
# Calculamos el ID del agente haciendo una select por su nombre. # Calculate agent ID using select by its name
my $query_idag = "select * from ttipo_modulo where nombre = '$nombre_modulo'"; my $query_idag = "select * from ttipo_modulo where nombre = '$nombre_modulo'";
my $s_idag = $dbh->prepare($query_idag); my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute; $s_idag ->execute;
@ -1195,10 +1196,10 @@ sub dame_modulo_id (%$$) {
} }
################################################################################# ##########################################################################
## SUB dame_agente_modulo_id (id_agente, id_tipomodulo, nombre) ## SUB dame_agente_modulo_id (id_agente, id_tipomodulo, nombre)
## Return agente_modulo ID, from tabla tagente_modulo, given id_agente, id_tipomodulo and name ## Return agente_modulo ID, from tabla tagente_modulo, given id_agente, id_tipomodulo and name
################################################################################## ##########################################################################
sub dame_agente_modulo_id (%$$$$) { sub dame_agente_modulo_id (%$$$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
my $id_agente = $_[1]; my $id_agente = $_[1];
@ -1208,7 +1209,7 @@ sub dame_agente_modulo_id (%$$$$) {
my $id_agentemodulo; my $id_agentemodulo;
my @data; my @data;
# Calculamos el ID del agente haciendo una select por su nombre. # Calculate agent ID using select by its name
my $query_idag = "select * from tagente_modulo where id_agente = '$id_agente' and id_tipo_modulo = '$id_tipomodulo' and nombre = '$nombre'"; my $query_idag = "select * from tagente_modulo where id_agente = '$id_agente' and id_tipo_modulo = '$id_tipomodulo' and nombre = '$nombre'";
my $s_idag = $dbh->prepare($query_idag); my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute; $s_idag ->execute;
@ -1224,17 +1225,17 @@ sub dame_agente_modulo_id (%$$$$) {
return $id_agentemodulo; return $id_agentemodulo;
} }
################################################################################# ##########################################################################
## SUB dame_nombreagente_agentemodulo (id_agente_modulo) ## SUB dame_nombreagente_agentemodulo (id_agente_modulo)
## Return agent name diven id_agente_modulo ## Return agent name diven id_agente_modulo
################################################################################## ##########################################################################
sub dame_nombreagente_agentemodulo (%$$) { sub dame_nombreagente_agentemodulo (%$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
my $id_agentemodulo = $_[1]; my $id_agentemodulo = $_[1];
my $dbh = $_[2]; my $dbh = $_[2];
my $id_agente; my @data; my $id_agente; my @data;
# Calculamos el ID del agente haciendo una select por su nombre. # Calculate agent ID using select by its name
my $query_idag = "select * from tagente_modulo where id_agente_modulo = ".$id_agentemodulo; my $query_idag = "select * from tagente_modulo where id_agente_modulo = ".$id_agentemodulo;
my $s_idag = $dbh->prepare($query_idag); my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute; $s_idag ->execute;
@ -1252,17 +1253,17 @@ sub dame_nombreagente_agentemodulo (%$$) {
return $nombre_agente; return $nombre_agente;
} }
################################################################################# ##########################################################################
## SUB dame_nombretipomodulo_idtipomodulo (id_tipo_modulo) ## SUB dame_nombretipomodulo_idtipomodulo (id_tipo_modulo)
## Return name of moduletype given id_tipo_modulo ## Return name of moduletype given id_tipo_modulo
################################################################################## ##########################################################################
sub dame_nombretipomodulo_idagentemodulo (%$$) { sub dame_nombretipomodulo_idagentemodulo (%$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
my $id_tipomodulo = $_[1]; my $id_tipomodulo = $_[1];
my $dbh = $_[2]; my $dbh = $_[2];
my @data; my @data;
# Calculamos el ID del agente haciendo una select por su nombre. # Calculate agent ID using select by its name
my $query_idag = "select * from ttipo_modulo where id_tipo = ".$id_tipomodulo; my $query_idag = "select * from ttipo_modulo where id_tipo = ".$id_tipomodulo;
my $s_idag = $dbh->prepare($query_idag); my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute; $s_idag ->execute;
@ -1275,17 +1276,17 @@ sub dame_nombretipomodulo_idagentemodulo (%$$) {
return $tipo; return $tipo;
} }
################################################################################# ##########################################################################
## SUB dame_learnagente (id_agente) ## SUB dame_learnagente (id_agente)
## Return 1 if agent is in learn mode, 0 if not ## Return 1 if agent is in learn mode, 0 if not
################################################################################## ##########################################################################
sub dame_learnagente (%$$) { sub dame_learnagente (%$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
my $id_agente = $_[1]; my $id_agente = $_[1];
my $dbh = $_[2]; my $dbh = $_[2];
my @data; my @data;
# Calculamos el ID del agente haciendo una select por su nombre. # Calculate agent ID using select by its name
my $query = "select * from tagente where id_agente = ".$id_agente; my $query = "select * from tagente where id_agente = ".$id_agente;
my $s_idag = $dbh->prepare($query); my $s_idag = $dbh->prepare($query);
$s_idag ->execute; $s_idag ->execute;
@ -1299,17 +1300,17 @@ sub dame_learnagente (%$$) {
} }
################################################################################# ##########################################################################
## SUB dame_id_tipo_modulo (id_agente_modulo) ## SUB dame_id_tipo_modulo (id_agente_modulo)
## Return id_tipo of module with id_agente_modulo ## Return id_tipo of module with id_agente_modulo
################################################################################## ##########################################################################
sub dame_id_tipo_modulo (%$$) { sub dame_id_tipo_modulo (%$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
my $id_agente_modulo = $_[1]; my $id_agente_modulo = $_[1];
my $dbh = $_[2]; my $dbh = $_[2];
my $tipo; my @data; my $tipo; my @data;
# Calculamos el ID del agente haciendo una select por su nombre. # Calculate agent ID using select by its name
my $query_idag = "select * from tagente_modulo where id_agente_modulo = ".$id_agente_modulo; my $query_idag = "select * from tagente_modulo where id_agente_modulo = ".$id_agente_modulo;
my $s_idag = $dbh->prepare($query_idag); my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute; $s_idag ->execute;
@ -1325,17 +1326,17 @@ sub dame_id_tipo_modulo (%$$) {
return $tipo; return $tipo;
} }
################################################################################# ##########################################################################
## SUB dame_intervalo (id_agente) ## SUB dame_intervalo (id_agente)
## Return interval for id_agente ## Return interval for id_agente
################################################################################## ##########################################################################
sub dame_intervalo (%$$) { sub dame_intervalo (%$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
my $id_agente = $_[1]; my $id_agente = $_[1];
my $dbh = $_[2]; my $dbh = $_[2];
my $tipo; my @data; my $tipo; my @data;
# Calculamos el ID del agente haciendo una select por su nombre. # Calculate agent ID using select by its name
my $query_idag = "select * from tagente where id_agente = ".$id_agente; my $query_idag = "select * from tagente where id_agente = ".$id_agente;
my $s_idag = $dbh->prepare($query_idag); my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute; $s_idag ->execute;
@ -1349,10 +1350,10 @@ sub dame_intervalo (%$$) {
return $tipo; return $tipo;
} }
################################################################################# ##########################################################################
## SUB dame_desactivado (id_agente) ## SUB dame_desactivado (id_agente)
## Return disabled = 1 if disabled, 0 if not disabled ## Return disabled = 1 if disabled, 0 if not disabled
################################################################################## ##########################################################################
sub dame_desactivado (%$$) { sub dame_desactivado (%$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
my $id_agente = $_[1]; my $id_agente = $_[1];
@ -1360,7 +1361,7 @@ sub dame_desactivado (%$$) {
my $desactivado; my $desactivado;
my $tipo; my @data; my $tipo; my @data;
# Calculamos el ID del agente haciendo una select por su nombre. # Calculate agent ID using select by its name
my $query_idag = "select * from tagente where id_agente = ".$id_agente; my $query_idag = "select * from tagente where id_agente = ".$id_agente;
my $s_idag = $dbh->prepare($query_idag); my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute; $s_idag ->execute;
@ -1377,17 +1378,17 @@ sub dame_desactivado (%$$) {
return $desactivado; return $desactivado;
} }
################################################################################# ##########################################################################
## SUB dame_ultimo_contacto (id_agente) ## SUB dame_ultimo_contacto (id_agente)
## Return last_contact for id_agente ## Return last_contact for id_agente
################################################################################## ##########################################################################
sub dame_ultimo_contacto (%$$) { sub dame_ultimo_contacto (%$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
my $id_agente = $_[1]; my $id_agente = $_[1];
my $dbh = $_[2]; my $dbh = $_[2];
my $tipo; my @data; my $tipo; my @data;
# Calculamos el ID del agente haciendo una select por su nombre. # Calculate agent ID using select by its name
my $query_idag = "select * from tagente where id_agente = ".$id_agente; my $query_idag = "select * from tagente where id_agente = ".$id_agente;
my $s_idag = $dbh->prepare($query_idag); my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute; $s_idag ->execute;
@ -1400,10 +1401,10 @@ sub dame_ultimo_contacto (%$$) {
return $tipo; return $tipo;
} }
################################################################################# ##########################################################################
## SUB crea_agente_modulo(nombre_agente, nombre_tipo_modulo, nombre_modulo) ## SUB crea_agente_modulo(nombre_agente, nombre_tipo_modulo, nombre_modulo)
## create an entry in tagente_modulo ## create an entry in tagente_modulo
################################################################################## ##########################################################################
sub crea_agente_modulo (%$$$$$$$) { sub crea_agente_modulo (%$$$$$$$) {
my $pa_config = $_[0]; my $pa_config = $_[0];
my $nombre_agente = $_[1]; my $nombre_agente = $_[1];

View File

@ -1,7 +1,7 @@
#!/usr/bin/perl #!/usr/bin/perl
################################################################################## ##########################################################################
# Pandora Network Server # Pandora Network Server
################################################################################## ##########################################################################
# Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com # Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com
# Copyright (c) 2005-2006 Artica Soluciones Tecnologicas S.L # Copyright (c) 2005-2006 Artica Soluciones Tecnologicas S.L
# #
@ -16,7 +16,7 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
################################################################################## ##########################################################################
# Includes list # Includes list
use strict; use strict;
@ -72,16 +72,16 @@ while ( 1 ){
#------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------
#--------------------- Main Perl Code below this line------------------------------- #--------------------- Main Perl Code below this line-----------------------
#------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------
########################################################################################## ##########################################################################
# SUB pandora_network_subsystem # SUB pandora_network_subsystem
# Subsystem to process network modules # Subsystem to process network modules
# This module runs each X seconds (server threshold) checking for network modules status # This module runs each X seconds (server threshold) checking for network modules status
########################################################################################## ##########################################################################
sub pandora_network_subsystem { sub pandora_network_subsystem {
# Init vars # Init vars
@ -97,8 +97,8 @@ sub pandora_network_subsystem {
my $max; my $min; my $module_interval; my $max; my $min; my $module_interval;
my $nombre; my $tcp_port; my $tcp_rcv; my $tcp_send; my $snmp_oid; my $nombre; my $tcp_port; my $tcp_rcv; my $tcp_send; my $snmp_oid;
my $snmp_community; my $ip_target; my $id_module_group; my $snmp_community; my $ip_target; my $id_module_group;
my $timestamp_viejo; # Almacena el timestamp del campo de la tabla tagente_estado my $timestamp_viejo; # Stores timestamp from tagente_estado table
my $id_agente_estado; # ID de la tabla de tagente_estado (para hacer el update mas fino) my $id_agente_estado; # ID from tagente_estado table
my $estado_cambio; # store tagente_estado cambio field my $estado_cambio; # store tagente_estado cambio field
my $estado_estado; # Store tagente_estado estado field my $estado_estado; # Store tagente_estado estado field
my $agent_name; # Agent name my $agent_name; # Agent name
@ -119,12 +119,12 @@ sub pandora_network_subsystem {
while ( 1 ) { while ( 1 ) {
logger ($pa_config,"Loop in Network Module Subsystem",10); logger ($pa_config,"Loop in Network Module Subsystem",10);
# For each element # For each element
# -Leo un modulo de tipo red (tipo 5, 6 o 7) o categoria grupo 2 # -read net type module (type 5, 6 or 7) or group cathegory 2
# -Leo su ultima entrada en la tabla tagente_modulo # -read its last tagente_modulo table entry
# -si timestamp de tagente_estado + module_interval <= timestamp actual # -if tagente_estado + module_interval timestamp<= present timestamp
# ejecuto el modulo, le doy 15 sec y contino. # run module, sleep 15 secs. and continue
# si ejecuta bien, grabo datos y estado # if ok, store data and status
# siguiente elemento # next element
# Calculate ID Agent from a select where module_type (id_tipo_modulo) > 4 (network modules) # Calculate ID Agent from a select where module_type (id_tipo_modulo) > 4 (network modules)
# Check for MASTER SERVERS only: check another agents if their servers are gone # Check for MASTER SERVERS only: check another agents if their servers are gone
@ -248,10 +248,10 @@ sub pandora_network_subsystem {
$dbh->disconnect(); $dbh->disconnect();
} }
########################################################################################## ##########################################################################
# SUB pandora_query_snmp (pa_config, oid, community, target, error, dbh) # SUB pandora_query_snmp (pa_config, oid, community, target, error, dbh)
# Makes a call to SNMP modules to get a value, # Makes a call to SNMP modules to get a value,
########################################################################################## ##########################################################################
sub pandora_query_snmp { sub pandora_query_snmp {
my $pa_config = $_[0]; my $pa_config = $_[0];
my $snmp_oid = $_[1]; my $snmp_oid = $_[1];
@ -300,10 +300,10 @@ sub pandora_query_snmp {
return $output; return $output;
} }
###################################################################################### ##########################################################################
# SUB exec_network_module (many parameters...) # SUB exec_network_module (many parameters...)
# Execute network module task in separated thread # Execute network module task in separated thread
###################################################################################### ##########################################################################
sub exec_network_module { sub exec_network_module {
my $id_agente = $_[0]; my $id_agente = $_[0];
my $id_agente_estado = $_[1]; my $id_agente_estado = $_[1];
@ -432,12 +432,10 @@ sub exec_network_module {
$module_data = $temp2; $module_data = $temp2;
$module_result =0; $module_result =0;
} else { # TCP Data numeric (inc or data) } else { # TCP Data numeric (inc or data)
if ($temp2 ne ""){ # COMO OSTIAS PUEDO SABER EN PERL if ($temp2 ne ""){
# EL TIPO DEL CONTENIDO DE UNA VARIABLE
# ODIO EL PUTO PERL !!!
if ($temp2 =~ /[A-Za-z\.\,\-\/\\\(\)\[\]]/){ if ($temp2 =~ /[A-Za-z\.\,\-\/\\\(\)\[\]]/){
$module_result=1; # Pequeña ñapita $module_result=1; # init
$module_data = 0; # Datos invalidos $module_data = 0; # invalid data
} else { } else {
$module_data = int($temp2); $module_data = int($temp2);
$module_result = 0; # Successful $module_result = 0; # Successful

View File

@ -1,7 +1,7 @@
#!/usr/bin/perl #!/usr/bin/perl
################################################################################## ##########################################################################
# Pandora Data Server # Pandora Data Server
################################################################################## ##########################################################################
# Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com # Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com
# Copyright (c) 2005-2006 Artica Soluciones Tecnologicas S.L # Copyright (c) 2005-2006 Artica Soluciones Tecnologicas S.L
# #
@ -16,7 +16,7 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
################################################################################## ##########################################################################
# Includes list # Includes list
use strict; use strict;
@ -25,13 +25,13 @@ use warnings;
use XML::Simple; # Useful XML functions use XML::Simple; # Useful XML functions
use Digest::MD5; # MD5 generation use Digest::MD5; # MD5 generation
use Time::Local; # DateTime basic manipulation use Time::Local; # DateTime basic manipulation
use DBI; # DB interface with MySQL use DBI; # DB interface with MySQL
use Date::Manip; # Needed to manipulate DateTime formats of input, output and compare use Date::Manip; # Needed to manipulate DateTime formats of input, output and compare
use File::Copy; # Needed to manipulate files use File::Copy; # Needed to manipulate files
use threads; use threads;
use threads::shared; use threads::shared;
# Librerias / Modulos de pandora # Pandora Modules
use pandora_config; use pandora_config;
use pandora_tools; use pandora_tools;
use pandora_db; use pandora_db;
@ -41,7 +41,7 @@ $| = 1;
my %pa_config; my %pa_config;
# Inicio del bucle principal de programa # Init main loop
pandora_init(\%pa_config,"Pandora Server"); pandora_init(\%pa_config,"Pandora Server");
# Read config file for Global variables # Read config file for Global variables
@ -65,7 +65,7 @@ pandora_dataserver(\%pa_config);
#------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------
#--------------------- Main Perl Code below this line------------------------------- #--------------------- Main Perl Code below this line-----------------------
#------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------
@ -73,9 +73,9 @@ pandora_dataserver(\%pa_config);
############################################################################## ##########################################################################
# Main loop # Main loop
############################################################################## ##########################################################################
sub pandora_dataserver { sub pandora_dataserver {
my $pa_config = $_[0]; my $pa_config = $_[0];
@ -99,7 +99,7 @@ sub pandora_dataserver {
$agent_filename = $1; $agent_filename = $1;
$file_md5 = "$pa_config->{'incomingdir'}/$agent_filename.checksum"; $file_md5 = "$pa_config->{'incomingdir'}/$agent_filename.checksum";
if (( -e $file_md5 ) or ($pa_config->{'pandora_check'} == 0)){ # If check is disabled, ignore if file_md5 exists if (( -e $file_md5 ) or ($pa_config->{'pandora_check'} == 0)){ # If check is disabled, ignore if file_md5 exists
# Comprobamos integridad # Verify integrity
my $check_result; my $check_result;
$check_result = md5check ($file_data,$file_md5); $check_result = md5check ($file_data,$file_md5);
if (($pa_config->{'pandora_check'} == 0) || ($check_result == 1)){ if (($pa_config->{'pandora_check'} == 0) || ($check_result == 1)){
@ -142,7 +142,7 @@ sub pandora_dataserver {
unlink ($file_md5); unlink ($file_md5);
} }
} }
} # No existe fichero de checksum, ignoramos el archivo } # No checksum file, ignore file
} }
} }
closedir(DIR); closedir(DIR);
@ -151,10 +151,10 @@ sub pandora_dataserver {
} }
} # End of main loop function } # End of main loop function
################################################################################# ##########################################################################
## SUB pandora_keepalived ## SUB pandora_keepalived
## Pandora Keepalive alert daemon subsystem ## Pandora Keepalive alert daemon subsystem
################################################################################## ##########################################################################
sub pandora_keepalived { sub pandora_keepalived {
my $pa_config = $_[0]; my $pa_config = $_[0];
@ -168,13 +168,13 @@ sub pandora_keepalived {
} }
################################################################################# ##########################################################################
## SUB keep_alive_check () ## SUB keep_alive_check ()
## Calculate a global keep alive check for agents without data and an alert defined ## Calculate a global keep alive check for agents without data and an alert defined
################################################################################## ##########################################################################
sub keep_alive_check { sub keep_alive_check {
# Buscamos si existe una alerta definida para cada item de la tablacombinacion agente/modulo # Search of any defined alert for any agent/module table entry
my $pa_config = $_[0]; my $pa_config = $_[0];
my $dbh = $_[1]; my $dbh = $_[1];
@ -281,11 +281,11 @@ sub keep_alive_check {
$s_idag->finish(); $s_idag->finish();
} }
################################################################################# ##########################################################################
## SUB procesa_datos (par1) ## SUB procesa_datos (param_1)
## Procesa un paquete de datos (XML preprocesado) ## Process data packet (XML file)
################################################################################## ##########################################################################
## param_1 : Nombre de la estructura contenedora de datos (XML) ## param_1 : XML datafile name
sub procesa_datos { sub procesa_datos {
my $pa_config = $_[0]; my $pa_config = $_[0];

View File

@ -1,9 +1,9 @@
#!/usr/bin/perl #!/usr/bin/perl
################################################################################## ##########################################################################
# Pandora Server. SNMP Console # Pandora Server. SNMP Console
################################################################################## ##########################################################################
# Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com # Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com
# Copyright (c) 2005-2006 Artica Soluciones Tecnol<EFBFBD>icas S.L # Copyright (c) 2005-2006 Artica Soluciones Tecnologicas S.L
# #
#This program is free software; you can redistribute it and/or #This program is free software; you can redistribute it and/or
#modify it under the terms of the GNU General Public License #modify it under the terms of the GNU General Public License
@ -16,7 +16,7 @@
#You should have received a copy of the GNU General Public License #You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software #along with this program; if not, write to the Free Software
#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
################################################################################## ##########################################################################
# Includes list # Includes list
use strict; use strict;
@ -55,10 +55,10 @@ if ( $pa_config{"daemon"} eq "1" ) {
pandora_snmptrapd (\%pa_config); pandora_snmptrapd (\%pa_config);
################################################################################# ##########################################################################
## SUB pandora_snmptrapd ## SUB pandora_snmptrapd
## Pandora SNMP Trap console/daemon subsystem ## Pandora SNMP Trap console/daemon subsystem
################################################################################## ##########################################################################
sub pandora_snmptrapd { sub pandora_snmptrapd {
my $pa_config = $_[0]; my $pa_config = $_[0];
@ -96,7 +96,7 @@ sub pandora_snmptrapd {
} }
$logfile_size = (stat($snmp_logfile))[7]; $logfile_size = (stat($snmp_logfile))[7];
if ($logfile_size < $index_data[1]){ # El tama? del log es ahora mas peq. que la ultima vez que lo leimos -> es uno nuevo if ($logfile_size < $index_data[1]){ # Log size smaller last time we read it -> new one
unlink ($snmp_logfile.".index"); unlink ($snmp_logfile.".index");
$index_data[0]=0; $index_data[0]=0;
$index_data[1]=0; $index_data[1]=0;
@ -169,10 +169,10 @@ sub pandora_snmptrapd {
} }
################################################################################# ##########################################################################
## SUB calcula_alerta_snmp($source,$oid,$custom_value,$timestamp); ## SUB calcula_alerta_snmp($source,$oid,$custom_value,$timestamp);
## Given an SNMP Trap received with this data, execute Alert or not ## Given an SNMP Trap received with this data, execute Alert or not
################################################################################## ##########################################################################
sub calcula_alerta_snmp { sub calcula_alerta_snmp {
# Parameters passed as arguments # Parameters passed as arguments
@ -231,14 +231,14 @@ sub calcula_alerta_snmp {
} }
if ($alert_fired == 1){ # Exists condition to fire alarm. if ($alert_fired == 1){ # Exists condition to fire alarm.
# Comprobar que est?por debajo del rango de time_threshold # Verify if under time_threshold
my $fecha_ultima_alerta = ParseDate($last_fired); my $fecha_ultima_alerta = ParseDate($last_fired);
my $fecha_actual = ParseDate( $timestamp ); my $fecha_actual = ParseDate( $timestamp );
my $ahora_mysql = &UnixDate("today","%Y-%m-%d %H:%M:%S"); # If we need to update MYSQL last_fired will use $ahora_mysql my $ahora_mysql = &UnixDate("today","%Y-%m-%d %H:%M:%S"); # If we need to update MYSQL last_fired will use $ahora_mysql
my $err; my $flag; my $err; my $flag;
my $fecha_limite = DateCalc($fecha_ultima_alerta,"+ $time_threshold seconds",\$err); my $fecha_limite = DateCalc($fecha_ultima_alerta,"+ $time_threshold seconds",\$err);
# Comprobar que est?por encima (sumando esta) del minimo de alertas # verify if upper min alerts
# Comprobar que est?por debajo (sumando esta) del m?imo de alertas # Verify if under min alerts
$flag = Date_Cmp($fecha_actual,$fecha_limite); $flag = Date_Cmp($fecha_actual,$fecha_limite);
if ( $flag >= 0 ) { # Out limits !, reset $times_fired, but do not write to if ( $flag >= 0 ) { # Out limits !, reset $times_fired, but do not write to
# database until a real alarm was fired # database until a real alarm was fired

View File

@ -1,9 +1,9 @@
package pandora_tools; package pandora_tools;
################################################################################## ##########################################################################
# Pandora Tools Package # Pandora Tools Package
################################################################################## ##########################################################################
# Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com # Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com
# Copyright (c) 2005-2006 Artica Soluciones Tecnológicas S.L # Copyright (c) 2005-2006 Artica Soluciones Tecnologicas S.L
# #
#This program is free software; you can redistribute it and/or #This program is free software; you can redistribute it and/or
#modify it under the terms of the GNU General Public License #modify it under the terms of the GNU General Public License
@ -16,7 +16,7 @@ package pandora_tools;
#You should have received a copy of the GNU General Public License #You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software #along with this program; if not, write to the Free Software
#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
################################################################################## ##########################################################################
use warnings; use warnings;
use Time::Local; use Time::Local;
@ -37,10 +37,10 @@ our @EXPORT = qw( daemonize
); );
########################################################################################## ##########################################################################
# Sub daemonize () # Sub daemonize ()
# Put program in background (for daemon mode) # Put program in background (for daemon mode)
########################################################################################## ##########################################################################
sub daemonize { sub daemonize {
chdir '/tmp' or die "Can't chdir to /tmp: $!"; chdir '/tmp' or die "Can't chdir to /tmp: $!";
@ -54,14 +54,14 @@ sub daemonize {
} }
# ----------------------------------------+ # -------------------------------------------+
# Otras funciones generales de Pandora | # Pandora other General functions |
# ----------------------------------------+ # -------------------------------------------+
################################################################################# ##########################################################################
# SUB is_numeric # SUB is_numeric
# Return TRUE if given argument is numeric # Return TRUE if given argument is numeric
################################################################################# ##########################################################################
sub getnum { sub getnum {
use POSIX qw(strtod); use POSIX qw(strtod);
@ -79,12 +79,12 @@ sub getnum {
sub is_numeric { defined getnum($_[0]) } sub is_numeric { defined getnum($_[0]) }
################################################################################# ##########################################################################
# SUB md5check (par1, par2) # SUB md5check (param_1, param_2)
# Comprobacion MD5 del archivo # Verify MD5 file .checksum
################################################################################# ##########################################################################
# param_1 : Nombre de archivo datos # param_1 : Name of data file
# param_2 : Nombre de archivo con MD5 # param_2 : Name of md5 file
sub md5check { sub md5check {
my $buf; my $buf;
@ -115,12 +115,12 @@ sub md5check {
} }
} }
################################################################################# ##########################################################################
# SUB logger (pa_config, par1, par2) # SUB logger (pa_config, param_1, param_2)
# Vuelca informacion a un archivo (para hacer log) # Log to file
################################################################################# ##########################################################################
# param_1 : Nombre de archivo datos # param_1 : Data file
# param_2 : Datos # param_2 : Data
sub logger { sub logger {
my $pa_config = $_[0]; my $pa_config = $_[0];
@ -146,9 +146,9 @@ sub logger {
} }
} }
############################################################################## ##########################################################################
# limpia_cadena (string) - Purge a string for any forbidden characters (esc, etc) # limpia_cadena (string) - Purge a string for any forbidden characters (esc, etc)
############################################################################## ##########################################################################
sub limpia_cadena { sub limpia_cadena {
my $micadena; my $micadena;
$micadena = $_[0]; $micadena = $_[0];
@ -157,12 +157,12 @@ sub limpia_cadena {
return $micadena; return $micadena;
} }
############################################################################## ##########################################################################
# sub float_equal (num1, num2, decimals) # sub float_equal (num1, num2, decimals)
# This function make possible to compare two float numbers, using only x decimals # This function make possible to compare two float numbers, using only x decimals
# in comparation. # in comparation.
# Taken from Perl Cookbook, O'Reilly. Thanks, guys. # Taken from Perl Cookbook, O'Reilly. Thanks, guys.
############################################################################## ##########################################################################
sub float_equal { sub float_equal {
my ($A, $B, $dp) = @_; my ($A, $B, $dp) = @_;
return sprintf("%.${dp}g", $A) eq sprintf("%.${dp}g", $B); return sprintf("%.${dp}g", $A) eq sprintf("%.${dp}g", $B);