From 8c9a69297efaafe42f1826e1764e45b2006a9447 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sat, 4 Apr 2020 14:02:05 +0200 Subject: sshban: use shlex to parse the action Allows to use more complex commands as actions. --- sshban.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sshban.py b/sshban.py index dd2a5f2..8d160f5 100755 --- a/sshban.py +++ b/sshban.py @@ -6,6 +6,7 @@ import logging.handlers import os import re import select +import shlex import sys import subprocess import time @@ -160,6 +161,7 @@ parser.add_argument('action', help = 'Executable to run. It will get two paramet args = parser.parse_args(sys.argv[1:]) progname = os.path.basename(sys.argv[0]) +action = shlex.split(args.action) logger = logging.getLogger(progname) loglevel = logging.DEBUG if args.debug else logging.INFO @@ -211,7 +213,7 @@ with open(fifofd) as fifo: logger.info('Action %s for: %s' % (verdict, host)) # TODO: rate-limit actions? - cmdline = [args.action, verdict, host] + cmdline = action + [verdict, host] res = subprocess.run(cmdline, capture_output = True, text = True) if res.returncode != 0: logger.error('Error running action "%s": return code %d' % (str(cmdline), res.returncode)) -- cgit v1.2.3