docs: def run_command(self, command, stdin=None, env=None):
          """
          Launch a shell command line.
  
          :param command: Command line to launch
          :type command: str
          :param stdin: Standard input of command
          :type stdin: file
          :param env: Environment variable used in command
          :type env: dict
          :return: Standard output of command
          :rtype: file
          """
          cmd = shlex.split(command)
          stdout = SpooledTemporaryFile(max_size=settings.TMP_FILE_MAX_SIZE,
                                        dir=settings.TMP_DIR)
          stderr = SpooledTemporaryFile(max_size=settings.TMP_FILE_MAX_SIZE,
                                        dir=settings.TMP_DIR)
          full_env = os.environ.copy() if self.use_parent_env else {}
          full_env.update(self.env)
          full_env.update(env or {})
          try:
              if isinstance(stdin, (ContentFile, SFTPStorageFile)):
                  process = Popen(cmd, stdin=PIPE, stdout=stdout, stderr=stderr, env=full_env)
                  process.communicate(input=stdin.read())
              else:
                  process = Popen(cmd, stdin=stdin, stdout=stdout, stderr=stderr, env=full_env)
              process.wait()
              if process.poll():
                  stderr.seek(0)
                  raise exceptions.CommandConnectorError(
                      "Error running: {}\n{}".format(command, stderr.read().decode('utf-8')))
              stdout.seek(0)
              stderr.seek(0)
              return stdout, stderr
          except OSError as err:
              raise exceptions.CommandConnectorError(
                  "Error running: {}\n{}".format(command, str(err)))