2010-09-03 5 views
31

Come posso rendere il trasporto SFTP attraverso SSHClient sul server remoto? Ho un host locale e due host remoti. Gli host remoti sono server di backup e server Web. Devo trovare sul server di backup il file di backup necessario e metterlo sul server web su sftp. Come posso far funzionare il trasporto SFTP di paramiko con SSHClient di paramiko?sshclient di paramiko con sftp

risposta

97

paramiko.SFTPClient

Esempio:

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

questo è giusto, ma questo trasporto creat dal mio localhost al web o di backup. Ho bisogno di sftp dal backup al web e sto iniziando lo script dal mio localhost. Il bot deve fare così: "ssh [email protected]; scp backup.file [email protected]:/home/admin/tmp". Come faccio a capire che scp non supporta la libreria paramiko, ma supporta sftp e voglio realizzare il tunnel sftp dal server remoto al server remoto? non dal mio localhost. – Denis

+0

Esiste ora una implzione SCP che utilizza paramiko https://github.com/jbardin/scp.py – lxx

+3

SCP e SFTP non sono la stessa cosa! – leoluk