Rfaulk has uploaded a new change for review. https://gerrit.wikimedia.org/r/84733
Change subject: mod - refactor ssh_command to use SSHClient. ...................................................................... mod - refactor ssh_command to use SSHClient. Change-Id: Ifeceab356fdec9609f9813716e5c2627bdae3ea2 --- M sartoris/sartoris.py 1 file changed, 16 insertions(+), 32 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/sartoris refs/changes/33/84733/1 diff --git a/sartoris/sartoris.py b/sartoris/sartoris.py index ef45676..c9d4979 100755 --- a/sartoris/sartoris.py +++ b/sartoris/sartoris.py @@ -384,7 +384,7 @@ filter(lambda x: x, proc.communicate()))) @staticmethod - def scp_file(source, target, user, password, host, port=22): + def scp_file(source, target, user, host, port=22): """ SCP files via paramiko. """ @@ -418,40 +418,24 @@ t.close() sock.close() - @staticmethod - def ssh_command(cmd, host, user, port=22, nbytes=4096): + def ssh_command_target(self, cmd): + """ + Talk to the target via SSHClient + """ - # Initialize connection - client = paramiko.Transport((host, port)) - - rsa_key = paramiko.RSAKey.from_private_key_file(PKEY) - client.connect(username=user, pkey=rsa_key) - - # Prepare stream lists, open session, exec command - stdout_data = [] - stderr_data = [] - - session = client.open_channel(kind='session') - session.exec_command(cmd) - - # Read output - while True: - if session.recv_ready(): - stdout_data.append(session.recv(nbytes)) - if session.recv_stderr_ready(): - stderr_data.append(session.recv_stderr(nbytes)) - if session.exit_status_ready(): - break - - # Get exit status and close sessions - exit_status = session.recv_exit_status() - session.close() - client.close() + ssh = paramiko.SSHClient() + ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) + ssh.connect( + self.config['user.name'], + username=self.config['target'], + key_filename=PKEY) + stdin, stdout, stderr = ssh.exec_command(cmd) + ssh.close() return { - 'exit_status': exit_status, - 'stdout': ''.join(stdout_data), - 'stderr': ''.join(stderr_data), + 'stdin': stdin, + 'stdout': '\n'.join(stdout.readlines()), + 'stderr': '\n'.join(stderr.readlines()), } def resync(self, args): -- To view, visit https://gerrit.wikimedia.org/r/84733 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ifeceab356fdec9609f9813716e5c2627bdae3ea2 Gerrit-PatchSet: 1 Gerrit-Project: sartoris Gerrit-Branch: master Gerrit-Owner: Rfaulk <rfaulk...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits