diff --git a/monimon.py b/monimon.py index 3aee8d9..46d6fc6 100755 --- a/monimon.py +++ b/monimon.py @@ -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])) diff --git a/plugins/httpcheck.py b/plugins/httpcheck.py index f666f8d..b93b7a1 100644 --- a/plugins/httpcheck.py +++ b/plugins/httpcheck.py @@ -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] diff --git a/plugins/ping.py b/plugins/ping.py index 38d92fc..8a62456 100644 --- a/plugins/ping.py +++ b/plugins/ping.py @@ -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, ""]