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提供了很多命令,具體內容可以參考官方文檔 。