在远程 SFTP 服务器上解压 tar.gz

Untar a tar.gz on a remote SFTP server

我可以使用 SFTP 在远程服务器上解压 .tar.gz 吗?

def untarFile(self,fileName,hostname,username,key_filename):
  self.connect(hostname, username, key_filename)
  self.username = username
  self.key_filename = key_filename
  self.fileName = fileName
  sftp_client = self.ssh.open_sftp()
  if (fileName.endswith("tar.gz")):
    print "Extracting files"
    tar = sftp_client.tarfile.open(fileName)
    tar.extractall()
    tar.close()
    print "Files extracted to %s" %self.autoRemote
  else:
    print "Could not extract test code"

我看到的错误:

Connection with server succesfully established with user test...
Extracting files
Traceback (most recent call last):
  File "test.py", line 181, in <module>
    ssh_obj.untarFile(ssh_obj.testCode, ssh_obj.hostname, ssh_obj.autouser, ssh_obj.autoSSHK)
  File "test.py", line 164, in untarFile
    tar = sftp_client.tarfile.open(fileName)
AttributeError: 'SFTPClient' object has no attribute 'tarfile'```

您无法使用 SFTP 协议提取远程服务器上的文件。

你所能做的就是使用 SSH 在服务器上执行 (shell) 命令,这就是你需要的。假设您完全可以 shell 访问服务器。

例如,如果您连接到 *nix 服务器,您可以在那里执行 tar 命令。

要在 Python Paramiko 中使用 SSH 执行命令,请参阅:
Python Paramiko - Run command