SCP vs SFTP
通过paramiko还可以传输文件,如何通过paramiko在计算机之间传输文件,通过阅读官方文档,发现有如下两种方式:
sftp = paramiko.SFTPClient.from_transport(ssh.get_transport())
sftp = ssh.open_sftp()
即新建一个SFTPClient对象,该对象复用之前的SSH连接,因此,我们使用sftp传输文件时,不需要再次进行用户认证。
-
文件上传
In [59]: sftp.put('memory.py', 'memory.py') Out[59]: <SFTPAttributes: [ size=288 uid=1000 gid=1000 mode=0100644 atime=1435391914 mtime=1435391914 ]>
-
文件下载
In [60]: sftp.get('memory.py', 'backup.py')
-
执行命令
paramiko并没有提供一个叫做scp的子模块,如果我们希望在计算机之间传输数据,可以通过sftp(sftp实现了scp所有的功能,也就没有必再实现一个scp)传输文件,还可以通过sftp执行命令,如下所示:
In [44]: sftp.listdir() Out[44]: ['.viminfo', '.bash_logout', '.bash_history', 'AgentBackkup_2015-06-10', 'AgentBackup', 'rdsAgent'] In [45]: sftp.rename('AgentBackkup_2015-06-10', 'AgentBackkup_2015-06-11') In [46]: sftp.listdir() Out[46]: ['AgentBackkup_2015-06-11', '.viminfo', '.bash_logout', '.bash_history', 'AgentBackup', 'rdsAgent']
sftp提供了很多命令,具体内容可以参考官方文档 。