2010-09-03 67 views
31

如何通过远程服务器上的SSHClient使SFTP传输?我有一台本地主机和两台远程主机。远程主机是备份服务器和Web服务器。我需要在备份服务器上找到必要的备份文件,并通过sftp将其放到Web服务器上。我如何使paramiko的SFTP传输与paramiko的SSHClient一起工作?paramiko的sshclient与sftp

回答

97

paramiko.SFTPClient

例子:

import paramiko 
paramiko.util.log_to_file('/tmp/paramiko.log') 

# Open a transport 

host = "example.com" 
port = 22 
transport = paramiko.Transport((host, port)) 

# Auth 

password = "foo" 
username = "bar" 
transport.connect(username = username, password = password) 

# Go! 

sftp = paramiko.SFTPClient.from_transport(transport) 

# Download 

filepath = '/etc/passwd' 
localpath = '/home/remotepasswd' 
sftp.get(filepath, localpath) 

# Upload 

filepath = '/home/foo.jpg' 
localpath = '/home/pony.jpg' 
sftp.put(localpath, filepath) 

# Close 

sftp.close() 
transport.close() 
+0

这就是正确的,但是从我的本地主机对Web或备份这个科瑞运输。我需要sftp从备份到网络,我从我的本地主机启动脚本。 Bot必须这样做:“ssh [email protected]; scp backup.file [email protected]:/ home/admin/tmp”。我怎么理解scram不支持paramiko库,但它支持sftp,我想从远程服务器到远程服务器使sftp隧道?不从我的本地主机。 – Denis 2010-09-03 11:27:17

+0

现在有一个使用paramiko的scp implmentation https://github.com/jbardin/scp.py – lxx 2015-02-03 00:37:47

+3

SCP和SFTP不一样! – leoluk 2015-10-09 06:17:04