code: def subproc_call(cmd, timeout=None):
      
      try:
          output = subprocess.check_output(
              cmd, stderr=subprocess.STDOUT,
              shell=True, timeout=timeout)
          return output, 0
      except subprocess.TimeoutExpired as e:
          logger.warn("Command '{}' timeout!".format(cmd))
          logger.warn(e.output.decode('utf-8'))
          return e.output, -1
      except subprocess.CalledProcessError as e:
          logger.warn("Command '{}' failed, return code={}".format(cmd, e.returncode))
          logger.warn(e.output.decode('utf-8'))
          return e.output, e.returncode
      except Exception:
          logger.warn("Command '{}' failed to run.".format(cmd))
          return "", -2
docs: Execute a command with timeout, and return STDOUT and STDERR
  
      Args:
          cmd(str): the command to execute.
          timeout(float): timeout in seconds.
  
      Returns:
          output(bytes), retcode(int). If timeout, retcode is -1.