PluginTools

PluginTools es una librería escrita en python que contiene todo tipo de utilidades referentes a la creación y desarrollo de plugins en PandoraFMS.

agents

agents

Global variables

 

Descripción

Las siguientes variables pueden modificarse de modo global.

Nombre Descripción Valor por defecto
agents_group_name
Grupo de destino de Pandora FMS ''
interval
Intervalo de monitorización del agente 300

 

Para modificar las variables globales use la función :

set_global_variable

Versión

agents

class Agent

Descripción

Clase básica de agente. Requiere parámetros de agente (config {diccionario}) y definición de módulo (modules_def [lista de diccionarios])

Ejemplo

import pandoraPlugintools as pt

# Create an instance of the Agent class
agent_instance = pt.agents.Agent()

Funciones

update_config

Descripción

Actualiza los ajustes de configuración con nuevos valores.

Parámetros

Nombre Tipo Requerido Descripción
config dict Si Un diccionario que contiene las claves de configuración y sus nuevos valores

Versión

  • 1.0.0

Ejemplo

# Update agent configuration
new_config = {
    "agent_name": "UpdatedAgentName",
    "description": "Updated agent description"
}
agent_instance.update_config(new_config)

get_config

Descripción

Recupera los ajustes de configuración actuales.

Return 

Tipo Descripción
dict Un diccionario que contiene los ajustes de configuración actuales

Versión

  • 1.0.0

Ejemplo

# Get current agent configuration
current_config = agent_instance.get_config()
print("Current Agent Configuration:", current_config)

add_module

Descripción

Añade un nuevo módulo a la lista de módulos.

Parámetros

Nombre Tipo Requerido Descripción
module dict Si Un diccionario que contiene información sobre el módulo

Return 

Tipo
None

Versión

  • 1.0.0

Ejemplo

# Define a module and add it to the agent
module_data = {
    "name": "HostAlive",
    "type": "generic_proc",
    "value": 1
}
agent_instance.add_module(module_data)

del_module

Descripción

Elimina un módulo basándose en su nombre

Parámetros

Nombre Tipo Requerido Descripción
module_name str Si El nombre del módulo a eliminar

Return 

Tipo
None

Versión

  • 1.0.0

Ejemplo

# Delete a module based on its name
module_name_to_delete = "HostAlive"
agent_instance.del_module(module_name_to_delete)

update_module

Descripción

Actualiza un módulo basándose en su nombre

Parámetros

Nombre Tipo Requerido Descripción
module_name str Si El nombre del módulo a actualizar
module dict Si Un diccionario que contiene la información actualizada del módulo

Return 

Tipo
None

Versión

  • 1.0.0

Ejemplo

# Update a module based on its name
module_name_to_update = "HostAlive"
updated_module_data = {
    "type": "generic_data",
    "value": 1
}
agent_instance.update_module(module_name_to_update, updated_module_data)

get_module

Descripción

Recupera información del módulo en base a su nombre

Parámetros

Nombre Tipo Requerido Descripción
module_name str SI El nombre del módulo a recuperar

Return 

Tipo Descripción
dict Un diccionario que contiene información del módulo si se encuentra, de lo contrario un diccionario vacío

Versión

  • 1.0.0

Ejemplo

# Get module information by name
module_info = agent_instance.get_module("HostAlive")
print("Module Information:", module_info)

get_modules_def

Descripción

Recupera las definiciones de todos los módulos añadidos.

Return 

Tipo Descripción
dict Un diccionario que contiene las definiciones de todos los módulos añadidos

Versión

  • 1.0.0

Ejemplo

# Get definitions of all added modules
all_module_defs = agent_instance.get_modules_def()
print("All Module Definitions:", all_module_defs)

add_log_module

Descripción

Añade un nuevo módulo de registro a la lista de módulos de registro.

Parámetros

Nombre Tipo Requerido Descripción
log_module dict Si Un diccionario que contiene información sobre el módulo de registro

Return 

Tipo
None

Versión

  • 1.0.0

Ejemplo

# Define a log module and add it to the agent
log_module_data = {
    "source": "LogSource",
    "type": "log",
    "value": "El host no es accesible"
}
agent_instance.add_log_module(log_module_data)

get_log_modules_def

Descripción

Recupera las definiciones de todos los módulos de registro añadidos

Return 

Tipo Descripción
dict  Un diccionario que contiene las definiciones de todos los módulos de registro añadidos

Versión

  • 1.0.0

Ejemplo

# Get definitions of all added log modules
all_log_module_defs = agent_instance.get_log_modules_def()
print("All Log Module Definitions:", all_log_module_defs)

print_xml

Descripción

Genera y opcionalmente imprime la representación XML del agente.

Parámetros

Nombre Tipo Requerido Descripción
print_flag bool SI Una bandera que indica si imprimir la representación XML

Return 

Tipo Descripción
str La representación XML del agente

Versión

  • 1.0.0

Ejemplo

# Generate and optionally print the XML representation of the agent
xml_representation = agent_instance.print_xml(print_flag=True)
print("Agent XML Representation:\n", xml_representation)

agents

set_global_variable

Descripción

Establece el valor de una variable global en el diccionario 'global_variables'.

Parámetros

Nombre  Tipo Requerido Descripción
variable_name str Si Nombre de la variable a establecer
value None Si Valor a asignar a la variable

Return 

Tipo
None

Versión

Ejemplo

import pandoraPlugintools as pt

variable_name = "agents_group_name"
value = "Servers"

pt.agents.set_global_variable(variable_name, value)

print(pt.agents._GLOBAL_VARIABLES)
agents

get_global_variable

Descripción

Establece el valor de una variable global en el diccionario 'global_variables'.

Parámetros

Nombre  Tipo Requerido Descripción
variable_name str Si Nombre de la variable a establecer

Return 

Tipo
None

Versión

Ejemplo

import pandoraPlugintools as pt

variable_name = "agents_group_name"
value = pt.agents.get_global_variable(variable_name)
print(f"{variable_name}: {value}")
agents

get_os

Descripción

Detecta el sistema operativo del sistema.

Return 

Tipo Descripción
str Sistema operativo del sistema

Requisitos

Versión

Ejemplo

import pandoraPlugintools as pt

os_name = pt.agents.get_os()
print("Operating System:", os_name)
agents

init_agent

Descripción

Inicializa una plantilla de agente con valores por defecto.

Return 

Nombre Tipo Requerido Descripción
dict dict No Diccionario que representa la plantilla de agente con valores por defecto

Requisitos

Versión

Ejemplo

import pandoraPlugintools as pt

# Example: Initializing an agent template with default values and custom values
custom_defaults = {
    "agent_name": "RockyLinux",
    "description": "Linux system",
    "address": "192.168.1.100"
}

agent_template = pt.agents.init_agent(default_values=custom_defaults)
print("Agent Template:", agent_template)
agents

print_agent

Descripción

Imprime el XML del agente.

Parámetros

Nombre Tipo Requerido Descripción
agent dict Si Diccionario con la configuración del agente
modules list Si Lista de módulos
log_modules list No Sirve para añadir módulos de log. Por defecto None
print_flag
bool
No
Sirve para mostrar el XML de los módulos en STDOUT. Por defecto None

Return 

Tipo Descripción
str Devuelve una cadena en formato XML

Requisitos

Versión

Ejemplo

import pandoraPlugintools as pt

# Example: Creating agent and module data
agent_data = {
    "agent_name": "Debian10",
    "description": "Linux system",
    "address": "192.168.1.100"
}

module_data = {
    "name": "Ping",
    "type": "generic_proc",
    "value": 1,
    "desc": "Check host alive",
}


agent_xml_representation = pt.agents.print_agent(
    agent=agent_data,
    modules=[module_data],
    print_flag=True
)

print("Agent XML Representation:\n", agent_xml_representation)

modules

modules

init_module

Descripción

Inicializa una plantilla de módulo con valores por defecto.

Parámetros

Nombre
Tipo
Requerido
Descripción
default_values
dict
Si
Módulo en formato dict

Return

Tipo Descripción
dict Módulo en formato XML

Versión

Ejemplo

import pandoraPlugintools as pt

# Define default values to override the template values
default_module_values = {
    "name": "HostAlive",
    "type": "generic_proc",
    "value": 1,
}

# Initialize a module template with default values
module_template = pt.modules.init_module(default_module_values)

# Print the initialized module template
print("Initialized Module Template:", module_template)
modules

print_module

Descripción

Devuelve el módulo en formato XML.

Parámetros

Nombre
Tipo
Requerido
Descripción
module
dict
Si
Módulo en formato dict
print_flag
bool
No
Con True muestra el XML del módulo en STDOUT

Return

Tipo Descripción
str Módulo en formato XML

Versión

Ejemplo

import pandoraPlugintools as pt

# Define module data
module_data = {
    "name": "HostAlive",
    "type": "generic_proc",
    "value": 1,
    "desc": "Check if the host is alive",
}

# Print module data in XML format without printing to STDOUT
module_xml = pt.modules.print_module(module_data, print_flag=False)
print("Module XML:\n", module_xml)
modules

init_log_module

Descripción

Inicializa una plantilla de módulo de logs con valores por defecto.

Parámetros

Nombre
Tipo
Requerido
Descripción
default_values
dict
Si
Módulo en formato dict

Return

Tipo Descripción
dict Módulo de logs en formato XML

Versión

Ejemplo

import pandoraPlugintools as pt

# Define default values for the log module template
default_log_module_values = {
    "source": "System",
    "value": "The host is not accessible",
}

# Initialize a log module template with default values
log_module_template = pt.modules.init_log_module(default_log_module_values)

# Print the initialized log module template
print("Initialized Log Module Template:", log_module_template)
modules

print_log_module

Descripción

Devuelve el módulo de logs en formato XML. 

Parámetros

nombre
tipo
descripción
module
dict
Módulo en formato dict
print_flag
bool
Si se utiliza muestra el XML de los módulos en STDOUT

Return 

tipo descripción
str Módulo en formato XML

Versión

Ejemplo

import pandoraPlugintools as pt

# Define log module data
log_module_data = {
    "source": "System",
    "value": "The host is not accessible",
}

# Print the log module in XML format
log_module_xml = pt.modules.print_log_module(log_module_data, print_flag=True)

# Print the generated log module XML
print("Log Module XML:\n", log_module_xml)

transfer

transfer

Global variables

 

Es un diccionario de variables con valores por defecto. Las variables que contiene son las siguientes:

Nombre
Descripción
Valor por defecto
transfer_mode
Modo de transferencia, local o tentacle
tentacle
temporal Ruta para ficheros temporales
/tmp
data_dir Directorio de datos de Pandora FMS
/var/spool/pandora/data_in/
tentacle_client Ruta del cliente de tentacle
tentacle
tentacle_ip Ip del servidor tentacle al que mandar los datos
127.0.0.1
tentacle_port Puerto de tentacle
41121
tentacle_extra_opts
Opciones extras de tentacle
''

Para modificar las variables globales use la función :

set_global_variable

Versión

transfer

set_global_variable

Descripción

Establece el valor de una variable global en el diccionario '_GLOBAL_VARIABLES'.

Parámetros

Nombre Tipo Requerido Descripción
variable_name str SI Nombre de la variable a establecer
value None Si Valor a asignar a la variable

Return 

Tipo
None


Versión

Ejemplo

import pandoraPlugintools as pt

# Define the variable name and value to set
variable_name = 'transfer_mode'
new_value = 'local'

# Set the value of the global variable
pt.transfer.set_global_variable(variable_name, new_value)

# Print the updated value of the global variable
print(f"Updated value of '{variable_name}': {pt.transfer._GLOBAL_VARIABLES[variable_name]}")
transfer

get_global_variable

Descripción

Obtiene el valor de una variable global del diccionario '_GLOBAL_VARIABLES'.

Parámetros

Nombre Tipo Requerido Descripción
variable_name str Si Nombre de la variable a establecer

Return 

Tipo
None


Versión

Ejemplo

import pandoraPlugintools as pt

# Define the variable name to retrieve
variable_name = 'tentacle_client'

# Get the value of the global variable
value = pt.transfer.get_global_variable(variable_name)

# Print the value of the global variable
print(f"The value of '{variable_name}' is: {value}")
transfer

tentacle_xml

Descripción

Envía un archivo usando el protocolo tentacle.

Parámetros

Nombre
Tipo
Requerido
Descripción
data_file
str
Si
Archivo a enviar. Se necesita la ruta completa del archivo
tentacle_ops
dict
No
Debe ser un dict con las opciones de tentacle (dirección [contraseña] [puerto])
tentacle_path
str
No Permite definir una ruta personalizada para el cliente tentacle en caso de que no esté en sys path)
debug int No Si está habilitado, el fichero de datos no será eliminado después de ser enviado
print_errors bool No Si se habilita con True, imprimirá todos los mensajes de error

Return 

bool Devuelve 0 para OK y 1 para errores

Requisitos

Versión

Ejemplo

import pandoraPlugintools as pt

# Define the path to the data file to be sent
data_file = '/tmp/agent.data'

# Define tentacle options as a dictionary
tentacle_ops = {
    'address': '192.168.1.100',
    'port': 41121
}

# Send the file using the tentacle protocol
success = pt.transfer.tentacle_xml(data_file, tentacle_ops, tentacle_path, debug, print_errors)

# Check if the file was sent successfully
if success:
    print("File sent successfully using tentacle protocol.")
else:
    print("Failed to send file using tentacle protocol.")
transfer

transfer_xml

Descripción

Detecta el modo de transferencia y llama a la función agentplugin() para realizar la transferencia.

Parámetros

Nombre Tipo Requerido Descripción
file str Si Diccionario con la configuración del agente
transfer_mode str Si Modo de transferencia. Por defecto es global_variables['transfer_mode']
tentacle_ip str Si Dirección IP para Tentacle. Por defecto es global_variables['tentacle_ip']
tentacle_port int Si Puerto para Tentacle. Por defecto es global_variables['tentacle_port']
tentacle_extra_opts str Si Opciones extra para Tentacle. Por defecto es global_variables['
tentacle_extra_opts']
data_dir str Si Ruta de la carpeta data_dir. Por defecto es global_variables['
data_dir']

Return 

Tipo
None

Versión

Ejemplo

import pandoraPlugintools as pt

# Define the path to the file to be transferred
file_to_transfer = '/tmp/agent.data'

# Define transfer mode (e.g., 'local' or 'tentacle')
transfer_mode = 'tentacle'

# Define Tentacle IP and port
tentacle_ip = '192.168.1.100'
tentacle_port = 41121

# Define data directory for local transfer mode
data_dir = '/var/spool/pandora/data_in/'

# Perform the file transfer based on the selected transfer mode
pt.transfer.transfer_xml(file_to_transfer, transfer_mode, tentacle_ip, tentacle_port, tentacle_extra_opts, data_dir)

# Print a message indicating the successful transfer
print("File transfer completed.")

transfer

write_xml

Descripción

Crea un archivo .data de agente en la carpeta data_dir especificada

Parámetros

Nombre
Tipo
Requerido
Descripción
xml
str
Si Cadena XML que se escribirá en el fichero
agent_name
str
Si
Nombre del agente para el xml y nombre del fichero
data_dir
str
Si
Carpeta en la que se creará el fichero
print_errors
bool
No
Si desea imprimir mensajes de error

Return

file Fichero del agente

Requisitos

Versión

Ejemplo

import pandoraPlugintools as pt

# Define the XML string to be written
xml_data = """
<agent>
    <name>RockyLinux</name>
    <module>
        <name>HostAlive</name>
        <type>generic_proc</type>
        <value>1</value>
    </module>
</agent>
"""

# Define the agent name and data directory
agent_name = "RockyLinux"
data_dir = '/tmp'

# Write the XML data to a .data file
data_file_path = pt.output.write_xml(xml_data, agent_name, data_dir)

# Print the path to the created .data file
print("Data file created:", data_file_path)

general

general

_print_debug

Descripción

Imprime cualquier lista, dict, string, float o integer como un json

Parámetros

Nombre  Tipo Requerido Descripción
var
str Si Elemento que será imprimido
print_errors
bool No Chequeo para pintar errores.

Versión

Ejemplo

import pandoraPlugintools as pt

device_name = "Router"
device_status = "Active"
device_data = {
    "cpu_usage": 80,
    "memory_usage": 60
}

information = {
    "name": device_name,
    "status": device_status,
    "data": device_data
}

pt.agents._print_debug(information, print_errors=True)

2

general

safe_input

Descripción

Convierte una cadena de entrada codificada en entidades HTML en una cadena de caracteres claros.

Parámetros

Nombre  Tipo Requerido Descripción
input_string
str Si La cadena de entrada codificada en entidades HTML

Return

str La cadena de caracteres claros descodificada

Versión

Ejemplo

import pandoraPlugintools as pt

# Define an input string with HTML entities
input_string = "&lt;p&gt;Hello, &lt;b&gt;world&lt;/b&gt;!&lt;/p&gt;"

# Use the safe_input function to decode the HTML entities
decoded_string = pt.general.safe_input(input_string)

# Print the decoded string
print("Decoded string:", decoded_string)
general

safe_output

Descripción

Convierte las entidades HTML a sus caracteres correspondientes en la cadena de entrada.

Parámetros

Nombre  Tipo Requerido Descripción
input_string str Si La cadena de caracteres claros descodificada

Return 

Tipo
None

Versión

Ejemplo

import pandoraPlugintools as pt

# Define an input string with HTML entities
input_string = "&lt;p&gt;Hello, &lt;b&gt;world&lt;/b&gt;!&lt;/p&gt;"

# Use the safe_output function to convert HTML entities back to characters
decoded_string = pt.general.safe_output(input_string)

# Print the decoded string
print("Decoded string:", decoded_string)
general

set_dict_key_value

Descripción

Asignar a una clave de un dict un valor determinado

Parámetros

Nombre Tipo Requerido Descripción
input_dict dict Si Diccionario 
input_key str Si Clave del diccionario
input_value None Si Valor del diccionario

Return 

Tipo
None

Versión

Ejemplo

import pandoraPlugintools as pt

# Define the dictionary of monitored devices
devices = {
    'device1': {
        'status': 'online',
        'temperature': 25.0,
        'humidity': 60.0
    },
    'device2': {
        'status': 'offline',
        'temperature': 0.0,
        'humidity': 0.0
    }
}

# Update the status of a device
pt.general.set_dict_key_value(devices['device1'], 'status', 'offline')

# Update the temperature of another device
pt.general.set_dict_key_value(devices['device2'], 'temperature', 22.5)

# Display the updated dictionary
print("Monitored devices dictionary:", devices)
general

get_dict_key_value

Descripción

Devuelve el valor de una clave en un dict dado.

Versión

Ejemplo

import pandoraPlugintools as pt

# Sample device monitoring data
device_data = {
    'device_id': '12345',
    'temperature': 28.5,
    'status': 'online'
}

# Get the temperature reading from the device data
temperature = pt.general.get_dict_key_value(device_data, 'temperature')
if temperature is not None:
    print("Temperature:", temperature, "C")

# Get the status of the device
status = pt.general.get_dict_key_value(device_data, 'status')
if status is not None:
    print("Status:", status)
general

generate_md5

Descripción

Genera un hash MD5 para la cadena de entrada dada

Parámetros

Nombre Tipo Requerido Descripción
input_string str Si La cadena para la que se generará el hash MD5.

Return 

str El hash MD5 de la cadena de entrada como cadena hexadecimal.

Requisitos

Versión

Ejemplo

import pandoraPlugintools as pt

# Sample monitoring data for a Linux system agent
name_agent = "Rocky-linux-master"

# Convert the monitoring data dictionary to a string
data_string = str(linux_system_data)

# Generate MD5 hash for the monitoring data
md5_hash = pt.general.generate_md5(data_string)

print("Linux System Monitoring Data:")
print(linux_system_data)
print("MD5 Hash:", md5_hash)
general

now

Descripción

Devuelve la hora en formato aaaa/mm/dd HH:MM:SS por defecto.

Parámetros

Nombre
Tipo
Requerido
Descripción
print_flag
int
No
Sirve para imprimir la hora, de no utilizarse la hora se devolverá. Por defecto None
utimestamp
int
No
Sirve para introducir un utimestamp, por defecto utilizará el actual.

Return 

Nombre Descripción
str Hora en formato aaaa/mm/dd HH:MM:SS
float Hora en formato epoch time

Requisitos

Versión

Ejemplo

import pandoraPlugintools as pt

# Get the current time in the default format
current_time_default = pt.general.now()
print("Current Time (Default Format):", current_time_default)

# Get the current time in Unix timestamp format
current_time_unix = pt.general.now(utimestamp=True)
print("Current Time (Unix Timestamp):", current_time_unix)

# Get and print the current time with the specified format
current_time_custom_format = pt.general.now(print_flag=True)
general

translate_macros

Descripción

Espera un diccionario de macros clave:valor (nombre_macro:valor_macro) y una cadena para reemplazar la macro.

Parámetros

Nombre
Tipo
Requerido
Descripción
macro_dic
dict
Si
Diccionario de macros clave:valor (nombre_macro:valor_macro)
data
str
Si
String para reemplazar la macro.

Return 

str Devuelve el string parseado

Versión

Ejemplo

import pandoraPlugintools as pt

# Define a dictionary of macros and their corresponding values
macros = {
    "{DATE}": "2023-08-16",
    "{TIME}": "15:30:00",
    "{DEVICE}": "Linux Server",
    "{USER}": "admin"
}

# Input string with macros
input_data = "The {DEVICE} is operational since {TIME}."

# Replace macros in the input string
translated_data = pt.general.translate_macros(macro_dic=macros, data=input_data)

# Print the translated input string
print("Translated input string:", translated_data)
general

parse_configuration

Descripción

Analiza la configuración. Lee el fichero de configuración y almacena sus datos como dict.

Parámetros

Nombre Tipo Requerido Descripción
file   si Ruta del fichero de configuración. Por defecto es "/etc/pandora/pandora_server.conf"
separator   no Separador para la opción y el valor. Por defecto es " "
default_values   no Diccionario de valores por defecto

Return 

dict Diccionario que contiene todas las claves y valores del fichero

Versión

Ejemplo

import pandoraPlugintools as pt

# Specify the path to the configuration file
config_file = "/etc/pandora/pandora_server.conf"

# Specify the separator used in the configuration file
separator = "="

# Define default values for configuration options
default_config = {
    "server_port": "8080",
    "debug_mode": "false",
    "log_file": "/var/log/pandora.log"
}

# Parse the configuration file and get the configuration data
parsed_config = pt.general.parse_configuration(file=config_file, separator=separator, default_values=default_config)

# Print the parsed configuration data
print("Parsed configuration:", parsed_config)
general

parse_csv_file

Descripción

Lee el fichero de configuración y almacena sus datos en un array.

Parámetros

Nombre Tipo Requerido Descripción
file str Si Ruta del fichero csv de configuración
separator str No Separador para la opción y el valor. Por defecto es ";"
coun_parameters
int
No
Número mínimo de parámetros que debe tener cada línea. Por defecto Ninguno
debug bool No Para imprimir errores en las líneas

Return 

list Contiene una lista de valores para cada línea csv

Requisitos

Versión

Ejemplo

import pandoraPlugintools as pt

# Specify the path to the CSV configuration file
csv_file = "data.csv"

# Specify the separator used in the CSV file
separator = ","

# Specify the minimum number of parameters each line should have
min_parameters = 3

# Parse the CSV configuration file and get the data in a list
parsed_csv_data = pt.general.parse_csv_file(file=csv_file, separator=separator, count_parameters=min_parameters, print_errors=True)

# Print the parsed CSV data
print("Parsed CSV data:", parsed_csv_data)
general

parse_int

Descripción

Convierte una variable dada en una cadena.

Parámetros

Nombre Tipo Requerido Descripción
var None Si La variable a analizar como cadena.

Return 

str El valor de la cadena analizada. Si el análisis falla, devuelve "".

Versión

Ejemplo

import pandoraPlugintools as pt

# Sample variables to be parsed as integers
var1 = "123"
var2 = "45.67"
var3 = "invalid"

# Parse the variables as integers using the parse_int function
parsed_var1 = pt.general.parse_int(var1)
parsed_var2 = pt.general.parse_int(var2)
parsed_var3 = pt.general.parse_int(var3)

# Print the parsed integer values
print("Parsed var1:", parsed_var1)  # Should print: Parsed var1: 123
print("Parsed var2:", parsed_var2)  # Should print: Parsed var2: 0 (parsing fails for decimal value)
print("Parsed var3:", parsed_var3)  # Should print: Parsed var3: 0 (parsing fails for invalid value)
general

parse_float

Descripción

Convierte una variable dada a float.

Parámetros

Nombre Tipo Requerido Descripción
var None SI La variable a convertir en float.

Return 

float El valor de float analizado. Si el análisis falla, devuelve 0.

Versión

Ejemplo

import pandoraPlugintools as pt

# Sample variables to be parsed as floats
var1 = "123.45"
var2 = "invalid"
var3 = 67

# Parse the variables as floats using the parse_float function
parsed_var1 = pt.general.parse_float(var1)
parsed_var2 = pt.general.parse_float(var2)
parsed_var3 = pt.general.parse_float(var3)

# Print the parsed float values
print("Parsed var1:", parsed_var1)  # Should print: Parsed var1: 123.45
print("Parsed var2:", parsed_var2)  # Should print: Parsed var2: 0.0 (parsing fails for invalid value)
print("Parsed var3:", parsed_var3)  # Should print: Parsed var3: 67.0
general

parse_str

Descripción

Convierte una variable dada en una cadena.

Parámetros

Nombre Tipo Requerido Descripción
var None Si La variable a analizar como cadena.

Return 

str El valor de la cadena analizada. Si el análisis falla, devuelve "".s

Versión

Ejemplo

import pandoraPlugintools as pt

# Sample variables to be parsed as strings
var1 = 12345
var2 = 3.14159
var3 = True

# Parse the variables as strings using the parse_str function
parsed_var1 = pt.general.parse_str(var1)
parsed_var2 = pt.general.parse_str(var2)
parsed_var3 = pt.general.parse_str(var3)

# Print the parsed string values
print("Parsed var1:", parsed_var1)  # Should print: Parsed var1: 12345
print("Parsed var2:", parsed_var2)  # Should print: Parsed var2: 3.14159
print("Parsed var3:", parsed_var3)  # Should print: Parsed var3: True
general

parse_bool

Descripción

Convierte una variable dada en bool.

Parámetros

Nombre Tipo Requerido Descripción
var None Si La variable a convertir en bool.

Return 

bool El valor bool analizado. Si el análisis falla, devuelve False.

Versión

Ejemplo

import pandoraPlugintools as pt

# Sample variables to be parsed as booleans
var1 = "True"
var2 = 1
var3 = "false"

# Parse the variables as booleans using the parse_bool function
parsed_var1 = pt.general.parse_bool(var1)
parsed_var2 = pt.general.parse_bool(var2)
parsed_var3 = pt.general.parse_bool(var3)

# Print the parsed boolean values
print("Parsed var1:", parsed_var1)  # Should print: Parsed var1: True
print("Parsed var2:", parsed_var2)  # Should print: Parsed var2: True
print("Parsed var3:", parsed_var3)  # Should print: Parsed var3: False

discovery

discovery

Global variables

Descripción

Las siguientes variables pueden modificarse de modo global.

Nombre Descripción Valor por defecto
_ERROR_LEVEL
Esta variable se utiliza para controlar el nivel de error. 0
_SUMMARY
Este diccionario se utiliza para almacenar un sumario de elementos {}
_INFO
Esta variable se utiliza para almacenar posibles errores en la ejecución ""
_MONITORING_DATA
Esta lista se utiliza para almacenar elementos []

 

Para modificar las variables globales use la función :

set_disco_error_level

set_disco_summary

set_disco_info_value

set_disco_monitoring_data

Versión

discovery

set_disco_error_level

Descripción

Establece el nivel de error al valor especificado.

Parámetros

Nombre Tipo Requerido Descripción
value int Si El valor del nivel de error. Por defecto es 0

Return 

Tipo
None

Versión

Ejemplo

import pandoraPlugintools as pt

# Set the error level to 1
pt.discovery.set_disco_error_level(1)

# Your code continues here without error level checking
print("Error level has been set to 1. Continue processing...")
discovery

set_disco_summary

Descripción

Establecer valor fijo en el diccionario  '_SUMMARY'.

Versión

Ejemplo

import pandoraPlugintools as pt

# Create a sample data dictionary
sample_data = {
    'total_devices': 50,
    'active_devices': 30,
    'inactive_devices': 20
}

# Set the discovery summary using the sample data
pt.set_disco_summary(sample_data)

# Verify by printing the updated _SUMMARY
print(pt._SUMMARY)
discovery

set_disco_summary_value

Descripción

Establece un valor fijo para una clave del diccionario '_SUMMARY'.

Parámetros

Nombre  Tipo Requerido Descripción
key str Si Clave para la que se establece el valor
value any Si Valor a asignar a la clave

Return 

Tipo
None

Versión

Ejemplo

import pandoraPlugintools as pt

# Set a fixed value for a specific key in the discovery summary
pt.set_disco_summary_value('total_devices', 100)
pt.set_disco_summary_value('active_devices', 75)
pt.set_disco_summary_value('inactive_devices', 25)

# Verify by printing the updated _SUMMARY
print(pt._SUMMARY)
discovery

add_disco_summary_value

Descripción

Añade un valor a una clave del diccionario 'resumen'.

Si la clave ya existe, se incrementará el valor. En caso contrario, se creará una nueva clave.

Parámetros

Nombre Tipo Requerido Descripción
key str SI Clave a la que añadir el valor
value None SI Valor a añadir a la clave

Return 

Tipo
None

Versión

Ejemplo

import pandoraPlugintools as pt

# Add values to existing keys in the discovery summary
pt.set_disco_summary_value('total_devices', 100)
pt.set_disco_summary_value('active_devices', 75)
pt.set_disco_summary_value('inactive_devices', 25)

# Add values to existing keys using add_disco_summary_value function
pt.add_disco_summary_value('total_devices', 10)
pt.add_disco_summary_value('active_devices', 5)
pt.add_disco_summary_value('inactive_devices', 5)

# Add values to new keys using add_disco_summary_value function
pt.add_disco_summary_value('new_key', 50)

# Verify by printing the updated _SUMMARY
print(pt._SUMMARY)
discovery

set_disco_info_value

Descripción

Establece un valor fijo en la variable 'info'.

Parámetros

Nombre Tipo Requerido Descripción
value str Si El valor a establecer en la variable 'info'. Por defecto es una cadena vacía.

Return 

Tipo
None

Versión

Ejemplo

import pandoraPlugintools as pt

# Set a value to the _INFO variable
pt.set_disco_info_value("This is some information about the discovery.")

# Verify by printing the updated _INFO
print(discovery._INFO)
discovery

add_disco_info_value

Descripción

Añade datos a la variable 'info'.

Parámetros

Nombre Tipo Requerido Descripción
value str Si Los datos a añadir a la variable 'info'. Por defecto es una cadena vacía

Return 

Tipo
None

Versión

Ejemplo

import pandoraPlugintools as pt

# Add data to the _INFO variable
pt.add_disco_info_value("Additional information: ")
pt.add_disco_info_value("System status: OK")

# Verify by printing the updated _INFO variable
print(pt._INFO)
discovery

set_disco_monitoring_data

Descripción

Establecer un valor fijo en los datos de seguimiento

Parámetros

Nombre Tipo Requerido Descripción
data list Si Lista con los datos

Return 

Tipo
None

Versión

Ejemplo

import pandoraPlugintools as pt

# Example data for disk monitoring
disk_monitoring_data = [
    {'path': '/dev/sda1', 'usage': '75%'},
    {'path': '/dev/sdb1', 'usage': '42%'},
    {'path': '/dev/sdc1', 'usage': '90%'}
]

# Set the monitoring data for disk usage
pt.set_disco_monitoring_data(disk_monitoring_data)

# Verify by printing the updated _MONITORING_DATA variable
print(pt._MONITORING_DATA)
discovery

add_disco_monitoring_data

Descripción

Añadir valor a los datos de seguimiento

Parámetros

Nombre Tipo Requerido Descripción
data dict Si Diccionario con los datos

Return 

Tipo
None

Versión

Ejemplo

import pandoraPlugintools as pt

# Example data for disk monitoring to be added
new_disk_data = {'path': '/dev/sdd1', 'usage': '60%'}

# Add the new disk monitoring data to the global monitoring dataset
pt.add_disco_monitoring_data(new_disk_data)

# Verify by printing the updated _MONITORING_DATA variable
print(pt._MONITORING_DATA)
discovery

disco_output

Descripción

Imprime la salida JSON y sale del script.

Requisitos

Ejemplo

import pandoraPlugintools as pt
import sys  # Don't forget to import the sys module for the sys.exit() function

# Set values for _SUMMARY, _INFO, and _MONITORING_DATA (for demonstration purposes)
pt.set_disco_summary({'disk_usage': '80%'})
pt.set_disco_info_value('Disk usage information')
pt.add_disco_monitoring_data({'path': '/dev/sda1', 'usage': '70%'})

# Call the disco_output function to print JSON output and exit with a specific error level
pt.disco_output()

http

http

auth_call

Descripción

Autenticación para petición url. Requiere el objeto request.sessions.Session().

Parámetros

Nombre Tipo Descripción
session  None objeto Session() de request
authtype  str 'ntlm', 'basic' o 'digest'
user 
str
Usuario de autenticación
passw 
str
Contraseña de autenticación

Return 

Tipo
None


Requisitos

Versión

Ejemplo

import pandoraPlugintools as pt

# Create a request session
session = pt.requests.Session()

# Define authentication details
authtype = 'basic'
user = 'admin'
passw = 'S4n3tk!'

# Call the authentication function
pt._auth_call(session, authtype, user, passw)

# Now you can use the authenticated session to make URL requests
url = 'https://api.com/api/data'
response = session.get(url)

# Print the response
print(response.text)
http

call_url

Descripción

Utiliza el módulo request para obtener el contenido de la URL.

Parámetros

Nombre
Tipo
Descripción
url
str
Url objetivo.
authtype
str
ntlm', 'basic', 'digest'. Opcional.
user
str
Usuario de autenticación. Opcional.
passw
str
Contraseña de autenticación. Opcional.
time_out
int
Time out para la llamada.

Return 

Tipo Descripción
str Salida de la petición request.

Requisitos

Versión

Ejemplo

import pandoraPlugintools as pt

# Define URL and authentication details
url = 'https://api.com/api/data'
authtype = 'basic'
user = 'admin'
passw = 'S4!jdKm'

# Call the URL and get the contents
response = pt.call_url(url, authtype=authtype, user=user, passw=passw, timeout=5, verify=True, print_errors=True)

# Print the response content
if response is not None:
    print(response.decode('utf-8'))
else:
    print("Error occurred during URL call.")

threads

threads

_single_thread

 

Descripción

Sólo para uso interno: Ejecuta una función dada en un hilo.

Parámetros

Nombre  Tipo Requerido Descripción
q None Si Una cola de la que obtener parámetros para la función
function callable Si La función a ejecutar en el hilo
errors list No Una lista para almacenar cualquier error encontrado durante la ejecución

Versión

threads

run_threads

Descripción

Ejecutar una función dada para una lista de elementos dada en un número dado de hilos

Parámetros

Nombre Tipo Requerido Descripción
max_threads
int SI Número de hilos 
function callable Si Función a ejecutar
items list Si Lista con los items que se asignaran a cada hilo
print_errors
bool No Para pintar error por salida

Return 

bool Devuelve True si no ha habido errores en la ejecución y 0 de suceder lo contrario.

Versión

Ejemplo

import pandoraPlugintools as pt

# Define a function to be executed in each thread
def process_item(item):
    # Perform some processing on the item
    print(f"Processing item: {item}")

# List of items to process
items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# Number of threads to use
max_threads = 3

# Run the function for each item using multiple threads
success = pt.run_threads(max_threads=max_threads, function=process_item, items=items, print_errors=True)

if success:
    print("All threads executed successfully.")
else:
    print("Errors occurred during thread execution.")
threads

set_shared_dict_value

Descripción

Establece un valor para una clave en el diccionario interno compartido. Esta función es utilizada por todos los procesos paralelos.

Parámetros

Nombre Tipo Requerido Descripción
key str SI La clave en el diccionario compartido
value None Si El valor a asignar a la clave

Return 

Tipo
None

Versión

Ejemplo

import pandoraPlugintools as pt

# Define a function to be executed by parallel processes
def process_data(item):
    # Process the data and set a value in the shared dictionary
    result = item * 2
    pt.set_shared_dict_value(key=str(item), value=result)

# List of items to process
data_list = [1, 2, 3, 4, 5]

# Create a shared dictionary and lock for synchronization
shared_dict = multiprocessing.Manager().dict()
shared_dict_lock = multiprocessing.Manager().Lock()

# Set the shared dictionary and lock in the module
pt._SHARED_DICT = shared_dict
pt._SHARED_DICT_LOCK = shared_dict_lock

# Number of parallel processes to use
num_processes = 2

# Run the function for each item using parallel processes
success = pt.run_parallel(num_processes=num_processes, function=process_data, data_list=data_list, print_errors=True)

if success:
    print("All processes executed successfully.")
else:
    print("Errors occurred during process execution.")
threads

add_shared_dict_value

Descripción

Añade un valor a una clave del diccionario interno compartido. Esta función es utilizada por todos los procesos paralelos.

Parámetros

Nombre Tipo Requerido Descripción
key str Si La clave en el diccionario compartido
value None SI El valor a añadir a la clave

Return 

Tipo
None

Versión

Ejemplo

import pandoraPlugintools as pt

# Define a function to be executed by parallel processes
def process_data(item):
    # Process the data and add a value to the shared dictionary
    result = item * 2
    pt.add_shared_dict_value(key=str(item), value=result)

# List of items to process
data_list = [1, 2, 3, 4, 5]

# Create a shared dictionary and lock for synchronization
shared_dict = multiprocessing.Manager().dict()
shared_dict_lock = multiprocessing.Manager().Lock()

# Set the shared dictionary and lock in the module
pt._SHARED_DICT = shared_dict
pt._SHARED_DICT_LOCK = shared_dict_lock

# Number of parallel processes to use
num_processes = 2

# Run the function for each item using parallel processes
success = pt.run_parallel(num_processes=num_processes, function=process_data, data_list=data_list, print_errors=True)

if success:
    print("All processes executed successfully.")
else:
    print("Errors occurred during process execution.")
In this example, the process_data function processes each item and adds a value to the shared dictionary using the add_shared_dict_value function. The run_parallel function is used to execute the process_data function in parallel processes for the given list of items. The shared dictionary and lock are created using the multiprocessing.Manager() and then assigned to the corresponding module variables _SHARED_DICT and _SHARED_DICT_LOCK in the pandoraPluginTools module.





threads

get_shared_dict_value

Descripción

Obtener el valor de una clave en el diccionario interno compartido. Esta función es utilizada por todos los procesos paralelos.

Parámetros

Nombre Tipo Requerido Descripción
key str Si La clave en el diccionario compartido

Return 

Tipo
None

Versión

Ejemplo

import pandoraPlugintools as pt

# Define a function to be executed by parallel processes
def process_data(item):
    # Process the data and get the value from the shared dictionary
    result = item * 2
    value = pt.get_shared_dict_value(key=str(item))
    print(f"Item: {item}, Processed Value: {result}, Shared Value: {value}")

# List of items to process
data_list = [1, 2, 3, 4, 5]

# Create a shared dictionary and lock for synchronization
shared_dict = multiprocessing.Manager().dict()
shared_dict_lock = multiprocessing.Manager().Lock()

# Set the shared dictionary and lock in the module
pt._SHARED_DICT = shared_dict
pt._SHARED_DICT_LOCK = shared_dict_lock

# Number of parallel processes to use
num_processes = 2

# Run the function for each item using parallel processes
success = pt.run_parallel(num_processes=num_processes, function=process_data, data_list=data_list, print_errors=True)

if success:
    print("All processes executed successfully.")
else:
    print("Errors occurred during process execution.")
threads

run_processes

Descripción

Ejecuta una función dada para una lista de elementos dada en un número dado de procesos

Parámetros

Nombre Tipo Requerido Descripción
max_processes
int Si El número máximo de procesos a ejecutar en paralelo
function
callable SI La función a ejecutar para cada ítem
items
list Si Lista de ítems a procesar
print_errors
bool No Si se van a imprimir los errores

Return 

Tipo Descripción
bool True si todos los procesos se completaron con éxito, False en caso contrario

Versión

import pandoraPlugintools as pt

# Define a function to be executed by parallel processes
def process_data(item):
    result = item * 2
    print(f"Item: {item}, Processed Value: {result}")

# List of items to process
data_list = [1, 2, 3, 4, 5]

# Number of parallel processes to use
num_processes = 2

# Run the function for each item using parallel processes
success = pt.run_processes(max_processes=num_processes, function=process_data, items=data_list, print_errors=True)

if success:
    print("All processes completed successfully.")
else:
    print("Errors occurred during process execution.")

encryption

encryption

_get_cipher_AES

Descripción

Sólo para uso interno: Obtiene el cifrado AES para encriptación y desencriptación.

Parámetros

Nombre  Tipo Requerido Descripción
password str Si La contraseña utilizada para obtener la clave de cifrado

Return

Tipo Descripción
AES Una instancia de cifrado AES para cifrar y descifrar

Requisitos

Versión

encryption

encrypt_AES

Descripción

Cifra una cadena utilizando el cifrado AES.

Parámetros

Nombre  Tipo Requerido Descripción
str_to_encrypt str Si La cadena a cifrar
password str No La contraseña utilizada para obtener la clave de cifrado

Return 

Tipo
None

Requisitos

Versión

Ejemplo

import pandoraPlugintools as pt

# Define a password for encryption
encryption_password = "S4!DHhsd"

# String to be encrypted
data_to_encrypt = "This is a confidential message."

# Encrypt the string using AES encryption
encrypted_data = pt.encrypt_AES(str_to_encrypt=data_to_encrypt, password=encryption_password)

print(f"Original String: {data_to_encrypt}")
print(f"Encrypted String: {encrypted_data}")
encryption

decrypt_AES

Descripción

Descifra una cadena encriptada utilizando el descifrado AES.

Parámetros

Nombre  Tipo Requerido Descripción
str_to_decrypt
str Si La cadena cifrada que se va a descifrar
password str No La contraseña utilizada para obtener la clave de cifrado base64

Return 

Tipo
None

Requisitos

Versión

Ejemplo

import pandoraPlugintools as pt

# Define a password for encryption
encryption_password = "S4snDH!"

# Encrypted string to be decrypted
encrypted_string = "2S1Ps52+qUQ45b5uK2od2w=="

# Decrypt the encrypted string
decrypted_string = pt.decrypt_AES(str_to_decrypt=encrypted_string, password=encryption_password)

print(f"Decrypted String: {decrypted_string}")
encryption

_get_cipher_Rijndael

Descripción

Sólo para uso interno: Obtén el cifrado Rijndael para encriptar y desencriptar.

Parámetros

Nombre  Tipo Requerido Descripción
password str Si La contraseña utilizada para obtener la clave de cifrado

Return

Tipo Descripción
AES Una instancia de cifrado AES para cifrar y descifrar

Requisitos

Versión

encryption

encrypt_Rijndael

Descripción

Cifra una cadena utilizando el cifrado Rijndael.

Parámetros

Nombre  Tipo Requerido Descripción
str_to_encrypt str Si La cadena a cifrar
password str No La contraseña utilizada para obtener la clave de cifrado

Return 

Tipo
None

Requisitos

Versión

Ejemplo

import pandoraPlugintools as pt

# Define a password for encryption
encryption_password = "S4!DHhsd"

# String to be encrypted
data_to_encrypt = "This is a confidential message."

# Encrypt the string using AES encryption
encrypted_data = pt.encrypt_Rijndael(str_to_encrypt=data_to_encrypt, password=encryption_password)

print(f"Original String: {data_to_encrypt}")
print(f"Encrypted String: {encrypted_data}")

encryption

decrypt_Rijndael

Descripción

Descifra una cadena cifrada utilizando el descifrado Rijndael.

Parámetros

Nombre  Tipo Requerido Descripción
str_to_encrypt str Si La cadena a cifrar
password str No La contraseña utilizada para obtener la clave de cifrado

Return 

Tipo
None

Requisitos

Versión

Ejemplo

import pandoraPlugintools as pt

# Define a password for encryption
encryption_password = "S4snDH!"

# Encrypted string to be decrypted
encrypted_string = "2S1Ps52+qUQ45b5uK2od2w=="

# Decrypt the encrypted string
decrypted_string = pt.decrypt_Rijndael(str_to_decrypt=encrypted_string, password=encryption_password)

print(f"Decrypted String: {decrypted_string}")

output

output

print_stdout

Descripción

Imprime el mensaje en stdout

Parámetros

Nombre  Tipo Requerido Descripción
message str No Mensaje a imprimir. Por defecto es ""

Return 

Tipo
None

Versión

Ejemplo

import pandoraPlugintools as pt

# Message to be printed
message = "Disk usage exceeded threshold: 90%."

# Print the message using the print_stdout function
pt.print_stdout(message)
output

print_stderr

Descripción

Imprime el mensaje en stdout

Parámetros

Nombre  Tipo Requerido Descripción
message str No Mensaje a imprimir. Por defecto es ""

Return 

Tipo
None

Versión

Ejemplo

import pandoraPlugintools as pt

# Monitoring error message to be printed
monitoring_error = "Error: Disk space running low!"

# Print the monitoring error message using the print_stderr function
pt.print_stderr(monitoring_error)

output

print_debug

Descripción

Imprime cualquier lista, dict, string, float o integer como un json

Parámetros

Nombre  Tipo Requerido Descripción
var
str Si Variable a imprimir
print_errors
bool No Imprime o no los errores. Por defecto es False.

Return 

Tipo
None

Versión

Ejemplo

import pandoraPlugintools as pt

# Monitoring data in dictionary format
monitoring_data = {
    "disk_usage": {
        "drive": "/dev/sda1",
        "usage": "85%"
    },
    "cpu_usage": {
        "core_1": "50%",
        "core_2": "45%"
    }
}

# Print the monitoring data using the print_debug function
pt.print_debug(monitoring_data)
output

logger

Descripción

Añadir una nueva línea al archivo de registro

Parámetros

Nombre  Tipo Requerido Descripción
log_file
str Si Ruta al archivo de registro
message str Si Mensaje a añadir al registro
log_level
str No Nivel de registro, si procede. Por defecto es una cadena vacía
add_date bool No Si desea añadir la fecha y hora actuales a la entrada del registro. Por defecto es True
print_errors
bool No Si se imprimen los errores. Por defecto es False

Return

Tipo Descripción
bool True si la entrada de registro se ha añadido correctamente, False en caso contrario

Versión

Ejemplo

import pandoraPlugintools as pt

# Path to the log file
log_file = "/tmp/log_file.txt"

# Log message to be added
log_message = "Disk space usage exceeded threshold."

# Log level (optional)
log_level = "WARNING"

# Add the log entry using the logger function
pt.logger(log_file, log_message, log_level)

snmp

snmp

Global variables

 

Descripción

Las siguientes variables pueden modificarse de modo global.

Nombre Descripción Valor por defecto
hostname
El nombre del host o dirección IP del dispositivo SNMP que deseas consultar ""
version
La versión del protocolo SNMP que se utilizará para la comunicación. Puede ser 1, 2 o 3 1
community
La cadena de comunidad utilizada en SNMPv1 y SNMPv2c para autenticar el acceso. Es como una contraseña simple que permite la lectura de información public
user
El nombre de usuario utilizado en SNMPv3 para autenticación y autorización ""
auth_protocol
El protocolo de autenticación utilizado en SNMPv3, como "MD5" o "SHA". Debe coincidir con el protocolo configurado en el dispositivo SNMP ""
auth_password
La contraseña utilizada para autenticación en SNMPv3. Debe coincidir con la configuración del dispositivo SNMP ""
privacy_protocol
El protocolo de privacidad utilizado en SNMPv3 para cifrar los datos, como "DES" o "AES". Debe coincidir con la configuración del dispositivo SNMP ""
privacy_password
La contraseña utilizada para cifrar los datos en SNMPv3. Debe coincidir con la configuración del dispositivo SNMP ""
security_level
El nivel de seguridad utilizado en SNMPv3, que puede ser "noAuthNoPriv" (sin autenticación ni privacidad), "authNoPriv" (autenticación sin privacidad) o "authPriv" (autenticación y privacidad)
noAuthNoPriv
timeout
El tiempo máximo en segundos que se esperará por una respuesta del dispositivo SNMP antes de que se agote el tiempo de espera 2
retries
El número de veces que se reintentará la operación SNMP en caso de que no se reciba una respuesta o se produzca un error 1
remote_port
El número de puerto remoto utilizado para la comunicación SNMP
161

 

Para modificar las variables globales use la función :

set_global_variable

Versión

snmp

set_global_variable

Descripción

Establece el valor de una variable global en el diccionario '_GLOBAL_VARIABLES'.

Parámetros

Nombre Tipo Requerido Descripción
variable_name str SI Nombre de la variable a establecer
value None Si Valor a asignar a la variable

Return 

Tipo
None


Versión

Ejemplo

import pandoraPlugintools as pt

# Define the variable name and value to set
variable_name = 'security_level'
new_value = 'auth_without_privacy'

# Set the value of the global variable
pt.snmp.set_global_variable(variable_name, new_value)

# Print the updated value of the global variable
print(f"Updated value of '{variable_name}': {pt.snmp._GLOBAL_VARIABLES[variable_name]}")
snmp

get_global_variable

Descripción

Obtiene el valor de una variable global del diccionario '_GLOBAL_VARIABLES'.

Parámetros

Nombre Tipo Requerido Descripción
variable_name str Si Nombre de la variable a establecer

Return 

Tipo
None


Versión

Ejemplo

import pandoraPlugintools as pt

# Define the variable name to retrieve
variable_name = 'community'

# Get the value of the global variable
value = pt.snmp.get_global_variable(variable_name)

# Print the value of the global variable
print(f"The value of '{variable_name}' is: {value}")
snmp

create_snmp_session

Descripción

Crea una sesión SNMP basada en las variables de configuración global.

Argumentos

Nombre Tipo Requerido Descripción
host str Si Dirección IP o nombre del dispositivo SNMP
version int No Versión del protocolo SNMP (1, 2 o 3)
community str No Contraseña simple para acceso en SNMPv1/v2c
user str Si Nombre de usuario en SNMPv3
auth_protocol str No Protocolo de autenticación en SNMPv3 (MD5, SHA, etc.)
auth_password str No Contraseña de autenticación en SNMPv3
privacy_protocol str No Protocolo de cifrado en SNMPv3 (DES, AES, etc.)
privacy_password str No Contraseña de cifrado en SNMPv3
security_level str No Nivel de seguridad en SNMPv3
timeout int No Tiempo máximo de espera para respuestas SNMP
retries int No Número de intentos en caso de fallo
remote_port int No Puerto remoto para comunicación SNMP

Return

Tipo Descripción
Session Una sesión SNMP configurada en base a las variables globales


Versión

Ejemplo

import PandoraPlugintools as pt

# Set global variables
pt.set_global_variable('hostname', '192.168.1.1')
pt.set_global_variable('version', 2)
pt.set_global_variable('community', 'public')
pt.set_global_variable('user', 'admin')
pt.set_global_variable('auth_protocol', 'md5')
pt.set_global_variable('auth_password', 'authpass')
pt.set_global_variable('privacy_protocol', 'des')
pt.set_global_variable('privacy_password', 'privpass')
pt.set_global_variable('security_level', 'authPriv')
pt.set_global_variable('timeout', 5)
pt.set_global_variable('retries', 2)
pt.set_global_variable('remote_port', 161)

# Create an SNMP session
session = pt.create_snmp_session()
print(session)
snmp

snmp_get

Descripción

Realiza una operación SNMP GET para recuperar el valor de un OID especificado.

Parámetros

Nombre Tipo Requerido Descripción
oid str Si El OID para la operación SNMP GET
host str Si Dirección IP o nombre del dispositivo SNMP
version int No Versión del protocolo SNMP (1, 2 o 3)
community str No Contraseña simple para acceso en SNMPv1/v2c
user str Si Nombre de usuario en SNMPv3
auth_protocol str No Protocolo de autenticación en SNMPv3 (MD5, SHA, etc.)
auth_password str No Contraseña de autenticación en SNMPv3
privacy_protocol str No Protocolo de cifrado en SNMPv3 (DES, AES, etc.)
privacy_password str No Contraseña de cifrado en SNMPv3
security_level str No Nivel de seguridad en SNMPv3
timeout int No Tiempo máximo de espera para respuestas SNMP
retries int No Número de intentos en caso de fallo
remote_port int No Puerto remoto para comunicación SNMP

Return 

Tipo Descripción
str El valor recuperado del OID especificado


Versión

Ejemplo

import PandoraPlugintools as pt

# Set global variables
pt.set_global_variable('hostname', '192.168.1.1')
pt.set_global_variable('version', 2)
pt.set_global_variable('community', 'public')
pt.set_global_variable('timeout', 5)
pt.set_global_variable('retries', 2)
pt.set_global_variable('remote_port', 161)

# Create an SNMP session
session = pt.create_snmp_session()

# Specify the OID for the SNMP GET operation
oid = '1.3.6.1.2.1.1.1.0'

# Perform an SNMP GET operation
value = pt.snmp_get(session, oid)
print('SNMP GET Value:', value)
snmp

snmp_walk

Descripción

Realiza una operación SNMP WALK para recuperar una lista de valores de un subárbol de la MIB.

Parámetros

Nombre Tipo Requerido Descripción
oid str Si El OID para la operación SNMP GET
host str Si Dirección IP o nombre del dispositivo SNMP
version int No Versión del protocolo SNMP (1, 2 o 3)
community str No Contraseña simple para acceso en SNMPv1/v2c
user str Si Nombre de usuario en SNMPv3
auth_protocol str No Protocolo de autenticación en SNMPv3 (MD5, SHA, etc.)
auth_password str No Contraseña de autenticación en SNMPv3
privacy_protocol str No Protocolo de cifrado en SNMPv3 (DES, AES, etc.)
privacy_password str No Contraseña de cifrado en SNMPv3
security_level str No Nivel de seguridad en SNMPv3
timeout int No Tiempo máximo de espera para respuestas SNMP
retries int No Número de intentos en caso de fallo
remote_port int No Puerto remoto para comunicación SNMP
Tipo Descripción
dict Diccionario con la OID y el valor de cada elemento.

Ejemplo

import PandoraPlugintools as pt

# Set global variables
pt.set_global_variable('hostname', '192.168.1.1')
pt.set_global_variable('version', 2)
pt.set_global_variable('community', 'public')
pt.set_global_variable('timeout', 5)
pt.set_global_variable('retries', 2)
pt.set_global_variable('remote_port', 161)

# Create an SNMP session
session = pt.create_snmp_session()

# Specify the OID for the SNMP WALK operation
oid = '1.3.6.1.2.1.2.2.1.2'  # Example OID for interface descriptions

# Perform an SNMP WALK operation
values = pt.snmp_walk(session, oid)
for value in values:
    print('SNMP WALK Value:', value)
snmp

snmp_trap

Descripción

Envía un trap SNMP a la IP de destino especificada utilizando el OID, valor y comunidad dados.

Parámetros

Nombre Tipo Requerido Descripción
trap_oid
str
Si
El OID para el trap SNMP
trap_value
str
SI
El valor asociado a la trampa
destination_ip
str
Si
La dirección IP del destino de la trampa
community
str
Si
La cadena de comunidad SNMP para la autenticación

Return 

Tipo
None


Versión

Ejemplo

import PandoraPlugintools as pt

# Specify the trap details
trap_oid = '1.3.6.1.4.1.12345.1.0'  # Example OID for custom trap
trap_value = 'Trap from my application'
destination_ip = '192.168.1.2'
community = 'public'

# Send an SNMP trap
pt.send_trap(trap_oid, trap_value, destination_ip, community)
print('SNMP Trap sent successfully.')
snmp

class SNMPTarget

Descripción

Una clase que representa un objetivo SNMP, proporcionando métodos para establecer la configuración SNMP
y realizar operaciones SNMP como GET y WALK.

Ejemplo

import pandoraPlugintools as pt

target = pt.SNMPTarget(
    host="192.168.1.1",
    community="public",
    version=2,
    timeout=5,
    retries=3
)

Funciones

snmp_get

Descripción

Parámetros

Nombre Tipo Requerido Descripción
oid str SI El OID para la operación SNMP GET

Return 

Tipo Descripción
str El valor recuperado del OID especificado

Versión

  • 1.0.0

Ejemplo

import pandoraPlugintools as pt

target = pt.SNMPTarget(
    host="192.168.1.1",
    community="public",
    version=2,
    timeout=5,
    retries=3
)

oid_value = target.snmp_get("1.3.6.1.2.1.1.1.0")
print("Valor del OID 1.3.6.1.2.1.1.1.0:", oid_value)

snmp_walk
Descripción

Parámetros

Nombre Tipo Requerido Descripción
oid str Si El OID para la operación SNMP WALK
Tipo Descripción
dict Diccionario con la OID y el valor de cada elemento.

Versión

  • 1.0.0

Ejemplo

import pandoraPlugintools as pt

target = pt.SNMPTarget(
    host="192.168.1.1",
    community="public",
    version=2,
    timeout=5,
    retries=3
)

oid_values_dict = target.snmp_walk("1.3.6.1.2.1.2.2.1.2")
print("Valores del OID 1.3.6.1.2.1.2.2.1.2:", oid_values_dict)