Пишем код
import paramiko
########################################################################
class SSHConnection(object):
""""""
#----------------------------------------------------------------------
def __init__(self, host, username, password, port=22):
"""Инициализируем и настраиваем соединение"""
self.sftp = None
self.sftp_open = False
# открываем поток SSH Transport
self.transport = paramiko.Transport((host, port))
self.transport.connect(username=username, password=password)
#----------------------------------------------------------------------
def _openSFTPConnection(self):
"""
Открываем SFTP соединение, если этого ещё не сделано
"""
if not self.sftp_open:
self.sftp = paramiko.SFTPClient.from_transport(self.transport)
self.sftp_open = True
#----------------------------------------------------------------------
def get(self, remote_path, local_path=None):
"""
Копируем файл с удалённого хоста к нам
"""
self._openSFTPConnection()
self.sftp.get(remote_path, local_path)
#----------------------------------------------------------------------
def put(self, local_path, remote_path=None):
"""
Копируем файл от нас на удалённый хост
"""
self._openSFTPConnection()
self.sftp.put(local_path, remote_path)
#----------------------------------------------------------------------
def close(self):
"""
Закрываем SFTP и ssh соединения
"""
if self.sftp_open:
self.sftp.close()
self.sftp_open = False
self.transport.close()
if __name__ == "__main__":
host = "myserver"
username = "mike"
pw = "dingbat!"
origin = '/home/mld/projects/ssh/random_file.txt'
dst = '/home/mdriscoll/random_file.txt'
ssh = SSHConnection(host, username, pw)
ssh.put(origin, dst)
ssh.close()
Итог
Дополнительное чтение
- Jesse Noller’s Программирование SSH при помощи Paramiko (Перевод)
Автор: Ishayahu Lastov

