From 7d50d92d9bb9a63ddafe175ce7a4ec92ba5b6cf1 Mon Sep 17 00:00:00 2001 From: Adam Olech Date: Thu, 24 Jun 2021 00:26:13 +0200 Subject: Pipe remote tar output to local tar --- tar_over_paramiko.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tar_over_paramiko.py b/tar_over_paramiko.py index 797a931..0801478 100755 --- a/tar_over_paramiko.py +++ b/tar_over_paramiko.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -import paramiko, sys, os, io, tarfile +import paramiko, sys, os, io, tarfile, subprocess from pathlib import Path if len(sys.argv) != 5: @@ -43,11 +43,20 @@ stdout_type = None stdin.flush() stdin.channel.shutdown_write() +untar = subprocess.Popen( + ["tar", "xf", "-"], + stdin=subprocess.PIPE, + stdout=subprocess.DEVNULL, + ) + tar_data = io.BytesIO() tar_file = open('/tmp/tartest', 'wb') for l in stdout: l_byte = l.encode() + + untar.stdin.write(l_byte) + tar_data.write(l_byte) tar_file.write(l_byte) @@ -61,6 +70,7 @@ for l in stderr: stderr_lines += 1 tar_file.close() +untar.stdin.close() tar_data.seek(0) tar_obj = tarfile.open(fileobj=tar_data, mode='r') -- cgit v1.2.1