From 9d62e558969631d8272881edec49183033fe3657 Mon Sep 17 00:00:00 2001 From: Lars Kruse Date: Sun, 23 Oct 2016 01:27:25 +0200 Subject: [PATCH] [monit_parser] replace 'commands' module with 'subprocess' necessary for python3 support --- plugins/monit/monit_parser | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/plugins/monit/monit_parser b/plugins/monit/monit_parser index 599f57a8..49c25330 100755 --- a/plugins/monit/monit_parser +++ b/plugins/monit/monit_parser @@ -8,9 +8,11 @@ STATUS_CMD = "monit status" -import sys +import os import re -from commands import getstatusoutput +import subprocess +import sys + def sanitize(s): OK_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789" @@ -22,12 +24,16 @@ def sanitize(s): procs = dict() -status, output = getstatusoutput(STATUS_CMD) -if status != 0: - print "Errror running status command: %s" % (output) - sys.exit(status) +try: + output = subprocess.check_output(STATUS_CMD.split()) +except (OSError, subprocess.CalledProcessError) as exc: + sys.stderr.write("Error running monit status command: %s%s" % (exc, os.linesep)) + sys.exit(1) -output = output.split('\n') +# python3: the result of command execution is bytes and needs to be converted +if not isinstance(output, str): + output = output.decode("ascii", "ignore") +output = output.splitlines() cur_proc = None for line in output: m = re.match("^Process '(.*)'.*$", line)