diff --git a/pandora_server/extras/pandoraPlugintools/README.md b/pandora_server/extras/pandoraPlugintools/README.md new file mode 100644 index 0000000000..e7ff22756c --- /dev/null +++ b/pandora_server/extras/pandoraPlugintools/README.md @@ -0,0 +1,88 @@ +# Python: module plugintools for PandoraFMS Developers + +pandoraPluginTools is a library that aims to help the creation of scripts and their integration in PandoraFMS. + +[PluginTools Reference Documentation](https://pandorafms.com/guides/public/books/plugintools) + +The package includes the following modules: agents, modules, transfer, general, discovery and http. Each one has different requirements and functions that facilitate and automate the data integration in PandoraFMS. They have the following dependencies : + +**agents** +Module that contains functions oriented to the creation of agents. +- datetime.datetime +- subprocess.Popen +- Hashlib +- sys +- os +- print_module +- print_log_module + +**modules** +Module that contains functions oriented to the creation of modules. + +**transfer** +Module containing functions oriented to file transfer and data sending. +- datetime.datetime +- subprocess.Popen +- shutil +- sys +- os +- print_agent + +**general** +Module containing general purpose functions, useful in the creation of plugins for PandoraFMS. +- datetime.datetime +- hashlib +- json +- sys + +**discovery** +Module that contains general purpose functions, useful in the creation of plugins for PandoraFMS discovery. +- json +- sys + +**http** +Module that contains general purpose functions, useful in the creation of plugins for PandoraFMS discovery. +- requests_ntlm.HttpNtlmAuth +- requests.auth.HTTPBasicAuth +- requests.auth.HTTPDigestAuth +- requests.sessions.Session + + +## Example + +``` python +import pandoraPluginTools as ppt + +## Define agent +server_name = "WIN-SERV" + +agent=ppt.agents.init_agent() +agent.update( + agent_name = ppt.generate_md5(server_name), + agent_alias = server_name, + description = "Default Windows server", +) + +## Define modules +modules=[] + +data = 10 +modules.append({ + "name" : "CPU usage", + "type" : "generic_data", + "value": data, + "desc" : "percentage of cpu utilization", + "unit" : "%" +}) + +## Transfer XML +ppt.transfer_xml( + agent, + modules, + transfer_mode="tentacle", + tentacle_address="192.168.1.20", + tentacle_port="41121", + temporal="/tmp" +) +``` + diff --git a/pandora_server/extras/pandoraPlugintools/agents.py b/pandora_server/extras/pandoraPlugintools/agents.py index e3310f5d72..acbb08d1ad 100644 --- a/pandora_server/extras/pandoraPlugintools/agents.py +++ b/pandora_server/extras/pandoraPlugintools/agents.py @@ -2,6 +2,7 @@ from datetime import datetime from subprocess import * import hashlib import sys +import os from .modules import print_module,print_log_module global_variables = { @@ -9,6 +10,21 @@ global_variables = { 'agents_group_name': '', 'interval' : 300 } +######################################################################################### +# OS check +######################################################################################### + +POSIX = os.name == "posix" +WINDOWS = os.name == "nt" +LINUX = sys.platform.startswith("linux") +MACOS = sys.platform.startswith("darwin") +OSX = MACOS # deprecated alias +FREEBSD = sys.platform.startswith("freebsd") +OPENBSD = sys.platform.startswith("openbsd") +NETBSD = sys.platform.startswith("netbsd") +BSD = FREEBSD or OPENBSD or NETBSD +SUNOS = sys.platform.startswith(("sunos", "solaris")) +AIX = sys.platform.startswith("aix") #### # Set a global variable with the specified name and assigns a value to it. @@ -118,3 +134,19 @@ def init_agent() : "agent_mode" : "1", } return agent + + +######################################################################################### +# Agent class +######################################################################################### + +class Agent: + """Basic agent class. Requires agent parameters (config {dictionary}) + and module definition (modules_def [list of dictionaries]) """ + def __init__( + self, + config, + modules_def + ): + self.config = config + self.modules_def = modules_def diff --git a/pandora_server/extras/pandoraPlugintools/general.py b/pandora_server/extras/pandoraPlugintools/general.py index 6e9f577e11..afc46286e5 100644 --- a/pandora_server/extras/pandoraPlugintools/general.py +++ b/pandora_server/extras/pandoraPlugintools/general.py @@ -2,37 +2,8 @@ import sys import os import json from datetime import datetime +import hashlib -######################################################################################### -# OS check -######################################################################################### - -POSIX = os.name == "posix" -WINDOWS = os.name == "nt" -LINUX = sys.platform.startswith("linux") -MACOS = sys.platform.startswith("darwin") -OSX = MACOS # deprecated alias -FREEBSD = sys.platform.startswith("freebsd") -OPENBSD = sys.platform.startswith("openbsd") -NETBSD = sys.platform.startswith("netbsd") -BSD = FREEBSD or OPENBSD or NETBSD -SUNOS = sys.platform.startswith(("sunos", "solaris")) -AIX = sys.platform.startswith("aix") - -######################################################################################### -# Agent class -######################################################################################### - -class Agent: - """Basic agent class. Requires agent parameters (config {dictionary}) - and module definition (modules_def [list of dictionaries]) """ - def __init__( - self, - config, - modules_def - ): - self.config = config - self.modules_def = modules_def ######################################################################################### # Debug_dict: prints dictionary in formatted json string. @@ -154,3 +125,20 @@ def parse_csv_file( except Exception as e: print (f"{type(e).__name__}: {e}") return 1 + + +######################################################################################### +# md5 generator +######################################################################################### +def generate_md5(input_string): + """ + Generates an MD5 hash for the given input string. + + Args: + input_string (str): The string for which the MD5 hash will be generated. + + Returns: + str: The MD5 hash of the input string as a hexadecimal string. + """ + md5_hash = hashlib.md5(input_string.encode()).hexdigest() + return md5_hash \ No newline at end of file