add readme.md and minor changes
This commit is contained in:
parent
b70be8b4e6
commit
b526b10200
|
@ -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"
|
||||
)
|
||||
```
|
||||
|
|
@ -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
|
||||
|
|
|
@ -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
|
Loading…
Reference in New Issue