python如何实现通过SSH下载远程指定目录下所有文件以及子目录中的所有文件到本地

近期一直在弄一个小程序就是利用paramiko库与远程的服务器建立SSH连接,之后下载指定目录下所有文件以及子目录中的所有文件存储到本地对应的目录下,各位有没有相应的代码发一下。

阅读 8.2k
4 个回答
import os
os.system('scp remote://your/path/* .')

都知道paramiko这个库了,google一下有很多实例的:

#-*- coding: utf-8 -*-
import paramiko
import datetime
import os


hostname = 'xxx.xxx.xxx.xxx'
username = 'xxx'
password = 'xxx'
port = 22
local_dir = '/tmp/local_dir'
remote_dir = '/tmp/remote_dir'

try:
    t = paramiko.Transport((hostname,port))
    t.connect(username=username,password=password)
    sftp = paramiko.SFTPClient.from_transport(t)
    files = sftp.listdir(remote_dir)
    # 如果有多层嵌套的目录处理下即可
    for f in files:
        sftp.get(os.path.join(remote_dir, f), os.path.join(local_dir, f))
    t.close()
except Exception as err:
       print(err)
       
       

如果觉得很麻烦,直接subprocess库使用去执行系统命令sshpass scp xxx即可

用fabfile这个库会更方便。它在paramiko的基础上简化了很多与ssh相关的操作。

linux 可以用楼上的os实现,而windows的话,你需要装一下git bash软件,然后把bin目录添加到系统环境变量PATH中,你会发现很多linux命令都在windows上可用了。有用请给赞或者采纳。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题