Finished WIP #31a27229 - now optional parameters can be specified for

each plugin in the hosts.yaml file
This commit is contained in:
Justus Grunow 2025-05-08 07:36:25 -04:00
parent 31a27229f4
commit d5d0c068fc
3 changed files with 22 additions and 8 deletions

View File

@ -16,8 +16,22 @@ with open('hosts.yaml', 'r') as file:
for host, details in hosts['hosts'].items():
for action in details['actions']:
!!! arguments = {'hostname': }
# Start building the arguments dict that will get passed to the plugin.
# By default, the only item is the hostname.
arguments = {'hostname': details['hostname']}
result = getattr(plugins[action], action)(details['hostname'])
#print(f"{host}\t{action}\t{result[0]}\t{result[1]}")
print(row_format.format(host, action, result[0], result[1]))
# Check if the action has any parameters defined in the YAML file, by
# checking if it's a string or a dict
if type(action) is str:
action_name = action
# If it's a dict, add each parameter to the arguments dict
elif type(action) is dict:
action_name = list(action)[0]
for argument, value in action[action_name].items():
arguments[argument] = value
print(arguments)
result = getattr(plugins[action_name], action_name)(arguments)
#print(f"{host}\t{action_name}\t{result[0]}\t{result[1]}")
print(row_format.format(host, action_name, result[0], result[1]))

View File

@ -1,8 +1,8 @@
import requests
def httpcheck(host):
def httpcheck(arguments):
try:
r = requests.head(f"https://{host}")
r = requests.head(f"{arguments['endpoint']}")
return [True, r.status_code]
except requests.ConnectionError:
return [False, r.status_code]

View File

@ -1,8 +1,8 @@
import os
import subprocess
def ping(host):
response = subprocess.run(["ping","-c","1",host],
def ping(arguments):
response = subprocess.run(["ping","-c","1",arguments['hostname']],
stdout = subprocess.DEVNULL, stderr = subprocess.PIPE)
if response.returncode == 0:
return [True, ""]