From adefcf590683c26392ba2e5e4b2f1521343005d0 Mon Sep 17 00:00:00 2001 From: Nicolas KAROLAK <nicolas@karolak.fr> Date: Mon, 29 Apr 2019 19:30:40 +0200 Subject: [PATCH] check that fail2ban is installed, disable warning on bans --- tests/test_fail2ban.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/tests/test_fail2ban.py b/tests/test_fail2ban.py index 6d30a34e..fa2a9dab 100755 --- a/tests/test_fail2ban.py +++ b/tests/test_fail2ban.py @@ -1,13 +1,14 @@ #!/usr/bin/env python3 + """ Criticality: Low Checks the current state of the fail2ban service. """ from pathlib import Path +import subprocess import sys - sys.path.append(str(Path(__file__).parents[1].resolve())) # pylint: disable=wrong-import-position @@ -45,7 +46,9 @@ def get_service_state(name: str) -> tuple: else: u.log("Using dbus to get current state.") bus = dbus.SystemBus() - systemd = bus.get_object("org.freedesktop.systemd1", "/org/freedesktop/systemd1") + systemd = bus.get_object( + "org.freedesktop.systemd1", "/org/freedesktop/systemd1" + ) manager = dbus.Interface(systemd, "org.freedesktop.systemd1.Manager") unit = manager.LoadUnit("{}.service".format(name)) proxy = bus.get_object("org.freedesktop.systemd1", str(unit)) @@ -120,6 +123,10 @@ def check_jail_banned(name: str) -> int: def main(): """Run all checks and exits with corresponding exit code.""" + if subprocess.call(["which", "fail2ban-server"], stdout=subprocess.DEVNULL) != 0: + u.info("fail2ban not installed, skipping test") + exit(2) + # init errors = 0 warnings = 0 @@ -129,7 +136,7 @@ def main(): u.warning("fail2ban is not running") warnings += 1 # warning exit if not running - sys.exit(3) + exit(3) else: u.success("fail2ban is running") @@ -139,15 +146,14 @@ def main(): u.info("{} jail is running".format(jail)) banned = check_jail_banned(jail) if banned > 0: - u.warning("there is {} banned host in {} jail".format(banned, jail)) - warnings += 1 + u.info("there is {} banned host in {} jail".format(banned, jail)) if errors: - sys.exit(1) + exit(1) elif warnings: - sys.exit(3) - else: - sys.exit(0) + exit(3) + + exit(0) if __name__ == "__main__": -- GitLab