使用python子进程和ssh读取远程文件?

时间:2011-08-21 01:17:19

标签: python ssh subprocess

如何使用subprocess和ssh从大型远程文件中读取数据?

4 个答案:

答案 0 :(得分:7)

import subprocess
ssh = subprocess.Popen(['ssh', 'user@host', 'cat', 'path/to/file'],
                       stdout=subprocess.PIPE)
for line in ssh.stdout:
    line  # do stuff

答案 1 :(得分:1)

上面的答案可行,但您必须设置ssh登录才能在your boxes之间不使用密码。还有其他方法可以使用Python在计算机之间传输文件。一种简单的方法,无需身份验证即可设置apache服务器并使用http request

答案 2 :(得分:1)

对于性能改进,这在文件很大时很重要,有rsync。有关确切改进的更多信息,请参阅以下帖子和Rafa的答案: How does `scp` differ from `rsync`?

然后使用rsync

进行以下算法
import subprocess

subprocess.Popen(["rsync", host-ip+'/path/to/file'],stdout=subprocess.PIPE)
for line in ssh.stdout:
    line  # do stuff

答案 3 :(得分:0)

使用iterreadline一起阅读每一行:

for i in iter(f.stdout.readline,"")