From 8055b1358a9813890a7f037e4fd3ee9d3057ec7c Mon Sep 17 00:00:00 2001 From: "jm.bardallo" Date: Mon, 27 May 2019 10:48:30 +0200 Subject: [PATCH] Bug fixed when out and err are None in operation exec_command --- src/opengnsys/oglive/operations.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/opengnsys/oglive/operations.py b/src/opengnsys/oglive/operations.py index 9ec907c..8c74f74 100644 --- a/src/opengnsys/oglive/operations.py +++ b/src/opengnsys/oglive/operations.py @@ -41,6 +41,7 @@ import array import six import chardet from opengnsys import utils +from opengnsys.log import logger def _getMacAddr(ifname): @@ -209,9 +210,20 @@ def exec_command(cmd): """ proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) (out, err) = proc.communicate() + try: + if out is not None: + encoding = chardet.detect(out)["encoding"] + if encoding is not None: + out = out.decode(encoding).encode("utf8") + if err is not None: + encoding = chardet.detect(err)["encoding"] + if encoding is not None: + err = err.decode(encoding).encode("utf8") + except Exception as e: + logger.debug("ERROR EXEC COMMAND: {}".format(str(e))) + stat = proc.returncode - return stat, out.decode(chardet.detect(out)['encoding']).encode('utf8'),\ - err.decode(chardet.detect(err)['encoding']).encode('utf8') + return stat, out, err def get_hardware():