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
- modules
- transfer
- general
- _print_debug
- safe_input
- safe_output
- set_dict_key_value
- get_dict_key_value
- generate_md5
- now
- translate_macros
- parse_configuration
- parse_csv_file
- parse_int
- parse_float
- parse_str
- parse_bool
- discovery
- Global variables
- set_disco_error_level
- set_disco_summary
- set_disco_summary_value
- add_disco_summary_value
- set_disco_info_value
- add_disco_info_value
- set_disco_monitoring_data
- add_disco_monitoring_data
- disco_output
- http
- threads
- _single_thread
- run_threads
- set_shared_dict_value
- add_shared_dict_value
- get_shared_dict_value
- run_processes
- encryption
- output
- snmp
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 :
Versión
- 1.0.0
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
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)
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
- 1.0.0
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)
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
- 1.0.0
Ejemplo
import pandoraPlugintools as pt
variable_name = "agents_group_name"
value = pt.agents.get_global_variable(variable_name)
print(f"{variable_name}: {value}")
get_os
Descripción
Detecta el sistema operativo del sistema.
Return
Tipo | Descripción |
str | Sistema operativo del sistema |
Requisitos
- os
Versión
- 1.0.0
Ejemplo
import pandoraPlugintools as pt
os_name = pt.agents.get_os()
print("Operating System:", os_name)
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
- datetime.datetime
Versión
- 1.0.0
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)
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
- modules.print_module
- modules.print_log_module
Versión
- 1.0.0
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
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
- 1.0.0
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)
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
- 1.0.0
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)
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
- 1.0.0
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)
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
- 1.0.0
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
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 :
Versión
- 1.0.0
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
- 1.0.0
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]}")
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
- 1.0.0
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}")
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
- sys
- os
- datetime.datetime
-
subprocess.Popen
Versión
- 1.0.0
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_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
- 1.0.0
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.")
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
- datetime.datetime
- hashlib
- sys
Versión
- 1.0.0
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
_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
- 1.0.0
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
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
- 1.0.0
Ejemplo
import pandoraPlugintools as pt
# Define an input string with HTML entities
input_string = "<p>Hello, <b>world</b>!</p>"
# 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)
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
- 1.0.0
Ejemplo
import pandoraPlugintools as pt
# Define an input string with HTML entities
input_string = "<p>Hello, <b>world</b>!</p>"
# 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)
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
- 1.0.0
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)
get_dict_key_value
Descripción
Devuelve el valor de una clave en un dict dado.
Versión
- 1.0.0
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)
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
- hashlib
Versión
- 1.0.0
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)
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
- datetime.datetime
Versión
- 1.0.0
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)
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
- 1.0.0
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)
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
- 1.0.0
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)
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
- sys
Versión
- 1.0.0
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)
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
- 1.0.0
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)
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
- 1.0.0
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
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
- 1.0.0
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
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
- 1.0.0
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
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 :
Versión
- 1.0.0
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
- 1.0.0
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...")
set_disco_summary
Descripción
Establecer valor fijo en el diccionario '_SUMMARY'.
Versión
- 1.0.0
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)
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
- 1.0.0
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)
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
- 1.0.0
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)
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
- 1.0.0
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)
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
- 1.0.0
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)
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
- 1.0.0
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)
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
- 1.0.0
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)
disco_output
Descripción
Imprime la salida JSON y sale del script.
Requisitos
- json
- sys
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
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
-
requests_ntlm.HttpNtlmAuth
-
requests.auth.HTTPBasicAuth
-
requests.auth.HTTPDigestAuth
Versión
- 1.0.0
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)
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
-
requests.sessions.Session
Versión
- 1.0.0
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
_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
- 1.0.0
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
- 1.0.0
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.")
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
- 1.0.0
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.")
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
- 1.0.0
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.
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
- 1.0.0
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.")
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
- 1.0.0
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
_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
- base64
- hmac
- hashlib
Versión
- 1.0.0
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
- base64
Versión
- 1.0.0
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}")
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
- base64
Versión
- 1.0.0
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}")
_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
- base64
- hmac
- hashlib
Versión
- 1.0.6
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
- base64
Versión
- 1.0.6
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}")
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
- base64
Versión
- 1.0.6
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
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
- 1.0.0
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)
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
- 1.0.0
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)
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
- 1.0.0
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)
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
- 1.0.0
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
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 :
Versión
- 1.0.0
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
- 1.0.0
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]}")
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
- 1.0.0
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}")
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
- 1.0.0
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_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
- 1.0.0
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_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. |
- 1.0.0
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_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
- 1.0.0
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.')
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
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)