remote.shortname, remotedir, localdir)
if not os.path.exists(localdir):
os.mkdir(localdir)
- result = remote.get_tar(remotedir, sudo=True)
_, local_tarfile = tempfile.mkstemp()
+ remote.get_tar(remotedir, local_tarfile, sudo=True)
with open(local_tarfile, 'r+') as fb1:
- fb1.write(result)
- fb1.seek(0)
tar = tarfile.open(mode='r|', fileobj=fb1)
while True:
ti = tar.next()
"""
log.debug('Transferring archived files from %s:%s to %s',
remote.shortname, remotedir, localfile)
- tardata = remote.get_tar(remotedir, zip_flag=True, sudo=True)
- with open(localfile, 'w') as out:
- out.write(tardata)
+ remote.get_tar(remotedir, localfile, zip_flag=True, sudo=True)
def get_wwn_id_map(remote, devs):
def hostname(self):
return self.name.split('@')[1]
+ @property
+ def username(self):
+ return self.name.split('@')[0]
+
@property
def is_online(self):
if self.ssh is None:
result = file_sftp.read()
return result
+ def _sftp_copy_file(self, file_path, to_path):
+ client = paramiko.SSHClient()
+ client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
+ client.load_system_host_keys()
+ client.connect(self.hostname, username=self.username)
+ sftp = client.open_sftp()
+ sftp.get(file_path, to_path)
+
def remove(self, path):
self.run(args=['rm', '-fr', path])
if not sudo:
return self._sftp_get_file(path)
temp_file_path = self.mktemp()
- self.chmod(temp_file_path, '0666')
args = [
'sudo',
'cp',
temp_file_path,
]
self.run(args=args)
+ self.chmod(temp_file_path, '0666')
ret = self._sftp_get_file(temp_file_path)
self.remove(temp_file_path)
return ret
- def get_tar(self, path, sudo=False, zip_flag=False):
+ def get_tar(self, path, to_path, sudo=False, zip_flag=False):
"""
Tar a remote file.
"""
zip_fld = lambda x: 'cz' if x else 'c'
temp_file_path = self.mktemp()
- self.chmod(temp_file_path, '0666')
args = []
if sudo:
args.append('sudo')
'.',
])
self.run(args=args)
- ret = self._sftp_get_file(temp_file_path)
+ if sudo:
+ self.chmod(temp_file_path, '0666')
+ self._sftp_copy_file(temp_file_path, to_path)
self.remove(temp_file_path)
- return ret
-
+
def getShortName(name):
"""