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}