2016-06-08 42 views
0

一旦我連接到遠程服務器,如下所示,如何查看paramiko的gzip文件的內容?

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

我可以做sftp.listdir(),看看有遠程服務器上的一些gzip格式,如example.gz.2016。我如何通過sftp連接訪問此文件的文本,而無需實際下載文件?

+0

這是不可能的SSH連接得到它,但你可以用通常的控制檯命令列出它們通過SSH。 –

+0

爲什麼不可能這樣? –

+2

它不是SFTP協議的一部分。你可以在https://tools.ietf.org/html/draft-ietf-secsh-filexfer-13 –

回答

1

你的問題有兩個部分:

  1. 如何查看zip文件的命令行內容
  2. 如何執行遠程命令,並得到使用python &輸出的paramiko

首先事情第一:如何列出控制檯上的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連接到同一臺服務器,您需要從這樣的

sftp = ssh.open_sftp() 
+0

查找所有可能的功能當我嘗試這個時,我得到'paramiko.ssh_exception.SSHException:Channel closed.'異常。我該如何解決這個問題? –

+0

@Someone_Else:很難分辨..你確定你的服務器正在運行ssh嗎? – Ward

+0

我認爲這是?做'nmap -p22 -Pn remotehost.com'確實有效(儘管nmap -p22 remotehost.com不支持,所以誰知道)。 –