def exec_command()

in aibond/cases/hdfs-analyse/hdfscluster.py [0:0]


    def exec_command(self, command: str, host: str = None, timeout: int = 5) -> Dict:
        if host == None or self._client_host == host:
            stdin, stdout, stderr = self._client.exec_command(command)
        else:
            if host.find(":") != -1:
                host = host.split(":")[0]
            stdin, stdout, stderr = self._client.exec_command("ssh " +  host +  " '" + command + "'")

        stdout.channel.settimeout(timeout)
        retcode = 999
       
        try:  
            output_stdout = stdout.read().decode('utf-8')
            output_stderr = stderr.read().decode('utf-8')
            retcode  = stdout.channel.recv_exit_status()
        except socket.timeout as e:
            output_stdout = ""
            output_stderr = ""
            while True:
               try:
                  output_stdout += stdout.readline() + "\n"
               except socket.timeout as e:
                  break
            while True:
               try:
                  output_stderr += stderr.readline() + "\n"
               except socket.timeout as e:
                  break

        stdin = None
        stdout = None
        stderr = None

        return {"stdout": output_stdout, "stderr": output_stderr, "exitStatus": retcode}