From 39d99e60ed4c384b3a04220000da4bee74797177 Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Mon, 8 Jun 2015 19:06:53 +0200 Subject: [PATCH] (configd) flush script output to tempfile to avoid the use of subprocess.check_output which can be slow on some platforms. --- src/opnsense/service/modules/processhandler.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/opnsense/service/modules/processhandler.py b/src/opnsense/service/modules/processhandler.py index 62fbff58c..6be3094a1 100644 --- a/src/opnsense/service/modules/processhandler.py +++ b/src/opnsense/service/modules/processhandler.py @@ -45,6 +45,7 @@ import glob import time import uuid import shlex +import tempfile import ph_inline_actions from modules import singleton @@ -429,8 +430,12 @@ class Action(object): return 'Execute error' elif self.type.lower() == 'script_output': try: - script_output = subprocess.check_output(script_command, env=self.config_environment, shell=True) - return script_output + with tempfile.NamedTemporaryFile() as output_stream: + subprocess.check_call(script_command, env=self.config_environment, shell=True, + stdout=output_stream, stderr=subprocess.STDOUT) + output_stream.seek(0) + script_output = output_stream.read() + return script_output except: syslog.syslog(syslog.LOG_ERR, '[%s] Script action failed at %s' % (message_uuid, traceback.format_exc()))