鍍金池/ 問答/Python/ python如何實(shí)現(xiàn)通過SSH下載遠(yuǎn)程指定目錄下所有文件以及子目錄中的所有文件到

python如何實(shí)現(xiàn)通過SSH下載遠(yuǎn)程指定目錄下所有文件以及子目錄中的所有文件到本地

近期一直在弄一個(gè)小程序就是利用paramiko庫與遠(yuǎn)程的服務(wù)器建立SSH連接,之后下載指定目錄下所有文件以及子目錄中的所有文件存儲(chǔ)到本地對應(yīng)的目錄下,各位有沒有相應(yīng)的代碼發(fā)一下。

回答
編輯回答
吢丕

linux 可以用樓上的os實(shí)現(xiàn),而windows的話,你需要裝一下git bash軟件,然后把bin目錄添加到系統(tǒng)環(huán)境變量PATH中,你會(huì)發(fā)現(xiàn)很多l(xiāng)inux命令都在windows上可用了。有用請給贊或者采納。

2018年3月12日 13:49
編輯回答
醉淸風(fēng)

用fabfile這個(gè)庫會(huì)更方便。它在paramiko的基礎(chǔ)上簡化了很多與ssh相關(guān)的操作。

2018年8月9日 12:07
編輯回答
誮惜顏

都知道paramiko這個(gè)庫了,google一下有很多實(shí)例的:

#-*- 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庫使用去執(zhí)行系統(tǒng)命令sshpass scp xxx即可

2017年3月28日 17:11
編輯回答
神曲
import os
os.system('scp remote://your/path/* .')
2018年1月4日 16:02