2010-09-03 20 views
31

¿Cómo puedo hacer que el transporte SFTP a través de SSHClient en el servidor remoto? Tengo un host local y dos hosts remotos. Los hosts remotos son servidor de respaldo y servidor web. Necesito encontrar en el servidor de copia de seguridad el archivo de copia de seguridad necesario y ponerlo en el servidor web a través de sftp. ¿Cómo puedo hacer que el transporte SFTP de paramiko funcione con SSHClient de paramiko?sshclient paramiko con sftp

Respuesta

97

paramiko.SFTPClient

Ejemplo:

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

eso es correcto, pero este transporte creat de mi localhost a web o copia de seguridad. Necesito sftp desde la copia de seguridad a la web y el script de inicio desde mi servidor local. Bot debe hacer esto: "ssh [email protected]; scp backup.file [email protected]:/home/admin/tmp". ¿Cómo entiendo que scp no es compatible con la biblioteca paramiko, pero es compatible con sftp y quiero hacer un túnel sftp desde un servidor remoto a un servidor remoto? no de mi localhost. – Denis

+0

Ahora hay una implementación de scp que usa paramiko https://github.com/jbardin/scp.py – lxx

+3

¡SCP y SFTP no son lo mismo! – leoluk