如何使用 paramiko 查看 gzip 文件的内容?

How can I see contents of gzip file with paramiko?

按如下方式连接到远程服务器后,

transport.connect(username=username, password=password)
sftp = paramiko.SFTPClient.from_transport(transport)

我可以 sftp.listdir() 并看到远程服务器上有一些 gzip 文件,例如 example.gz.2016。如何通过 sftp 连接访问此文件的文本,而无需实际下载文件?

您的问题分为两部分:

  1. 如何从命令行查看 zip 文件的内容
  2. 如何执行远程命令并使用 python¶miko
  3. 获取输出

首先 首先要说的是:如何在控制台上列出一个 zip 文件的内容。 less can look into zip files,所以在你的情况下,执行 less example.gz.2016 应该会给你一个 zip 存档内的文件列表

其二:如何远程执行命令。

import paramiko
ssh = paramiko.SSHClient()
# next is needed if your keys are not yet known on the client.
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(HOST_NAME, username=USER, password=PASSWORD)

stdin, stdout, stderr = ssh.exec_command('less ' + zipfilename)
for line in stdout.readlines():
    # here you will have your listing
    print (line)

for errline in stderr.readlines():
    # Don't forget to check the error output
    print ('***', errline)

祝你好运!

编辑 如果您需要到同一台服务器的 sFTP 连接,您需要像这样从 ssh 连接中获取它

sftp = ssh.open_sftp()