diff --git a/src/python/jw/pkg/lib/ec/ssh/Paramiko.py b/src/python/jw/pkg/lib/ec/ssh/Paramiko.py index 84ac0d9e..d1171d6f 100644 --- a/src/python/jw/pkg/lib/ec/ssh/Paramiko.py +++ b/src/python/jw/pkg/lib/ec/ssh/Paramiko.py @@ -32,10 +32,16 @@ class Paramiko(Base): hostname = self.hostname if hostname is None: raise Exception('Tried to run connect without target hostname') + kwargs: dict[str, Any] = { + 'hostname': hostname, + 'username': self.username, + 'password': self.password, + 'allow_agent': True, + } + if self.port is not None: + kwargs['port'] = self.port try: - ret.connect( - hostname = hostname, username = self.username, allow_agent = True - ) + ret.connect(**kwargs) except Exception as e: log(ERR, f'Failed to connect to {self.hostname} ({str(e)})') raise @@ -88,5 +94,8 @@ class Paramiko(Base): raise if cmd_input is not None: stdin.write(cmd_input) + stdin.channel.shutdown_write() + stdout_data = stdout.read() + stderr_data = stderr.read() exit_status = stdout.channel.recv_exit_status() - return Result(stdout.read(), stderr.read(), exit_status, cmd = cmd) + return Result(stdout_data, stderr_data, exit_status, cmd = cmd)