為什么要用Python腳本下載以及基本介紹
經(jīng)常會有人需要從遠(yuǎn)程服務(wù)器下載一些文件資源,下載個別小文件可以直接用sz等命令,但是,需要下載一個文件夾呢?sz就不行了,這時候當(dāng)然可以先壓縮文件夾,然后下載,這樣也是可以的,只要文件不是很大,那么,有沒有其他辦法下載文件夾呢?辦法當(dāng)然是有的,就是寫Python腳本,然后通過paramiko模塊就可以從遠(yuǎn)程傳輸下載文件夾到本地了,是不是很方便呢……
paramiko模塊提供了ssh及sftp進(jìn)行遠(yuǎn)程登錄服務(wù)器執(zhí)行命令和上傳下載文件的功能。這是一個第三方的軟件包,使用之前需要先進(jìn)行安裝,我們這里主要利用sftp進(jìn)行下載傳輸文件
就像下圖中的運(yùn)行,可以一個一個的循環(huán)下載文件
使用時候的基本配置下面的這些信息需要自己配置一下,即初始化一些參數(shù),包括服務(wù)器信息以及遠(yuǎn)程文件和本地文件的存放路徑配置
# 服務(wù)器連接信息 host_name = "172.0.0.1" user_name = "root" password = "root" port = 22 # 遠(yuǎn)程文件路徑(需要絕對路徑) remote_dir = "/data/nfs/zdlh/pdf/2018/07/31" # 本地文件存放路徑(絕對路徑或者相對路徑都可以) local_dir = "file_download/"實(shí)現(xiàn)源碼
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 通過paramiko從遠(yuǎn)處服務(wù)器下載文件資源到本地 author: gxcuizy time: 2018-08-01 """ import paramiko import os from stat import S_ISDIR as isdir def down_from_remote(sftp_obj, remote_dir_name, local_dir_name): """遠(yuǎn)程下載文件""" remote_file = sftp_obj.stat(remote_dir_name) if isdir(remote_file.st_mode): # 文件夾,不能直接下載,需要繼續(xù)循環(huán) check_local_dir(local_dir_name) print("開始下載文件夾:" + remote_dir_name) for remote_file_name in sftp.listdir(remote_dir_name): sub_remote = os.path.join(remote_dir_name, remote_file_name) sub_remote = sub_remote.replace("", "/") sub_local = os.path.join(local_dir_name, remote_file_name) sub_local = sub_local.replace("", "/") down_from_remote(sftp_obj, sub_remote, sub_local) else: # 文件,直接下載 print("開始下載文件:" + remote_dir_name) sftp.get(remote_dir_name, local_dir_name) def check_local_dir(local_dir_name): """本地文件夾是否存在,不存在則創(chuàng)建""" if not os.path.exists(local_dir_name): os.makedirs(local_dir_name) if __name__ == "__main__": """程序主入口""" # 服務(wù)器連接信息 host_name = "172.17.2.18" user_name = "dev" password = "dev@zdlh" port = 22 # 遠(yuǎn)程文件路徑(需要絕對路徑) remote_dir = "/data/nfs/zdlh/pdf/2018/07/31" # 本地文件存放路徑(絕對路徑或者相對路徑都可以) local_dir = "file_download/" # 連接遠(yuǎn)程服務(wù)器 t = paramiko.Transport((host_name, port)) t.connect(username=user_name, password=password) sftp = paramiko.SFTPClient.from_transport(t) # 遠(yuǎn)程文件開始下載 down_from_remote(sftp, remote_dir, local_dir) # 關(guān)閉連接 t.close()結(jié)束語
在Python中,可以很好地利用Parmmiko的sftp完成文件傳輸操作。大家有什么疑問或者想法,可以留言或者聯(lián)系我。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42128.html
摘要:模塊為的縮寫,由的網(wǎng)絡(luò)小組所制定為建立在應(yīng)用層基礎(chǔ)上的安全協(xié)議。是目前較可靠,專為遠(yuǎn)程登錄會話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議。利用該模塊,可以方便的進(jìn)行連接和協(xié)議進(jìn)行文件傳輸。 paramiko模塊 SSH 為 Secure Shell 的縮寫,由 IETF 的網(wǎng)絡(luò)小組(Network Working Group)所制定;SSH 為建立在應(yīng)用層基礎(chǔ)上的安全協(xié)議。SSH 是目前較可靠,專...
摘要:是基于實(shí)現(xiàn)的遠(yuǎn)程安全連接,支持認(rèn)證及密鑰方法。利用函數(shù)發(fā)送到,通過函數(shù)獲取回顯。如下全局屬性設(shè)定對象的作用是定義的全局設(shè)定,支持多個屬性及自定義屬性。相比確實(shí)簡化了不少。出現(xiàn)異常時,發(fā)出警告,繼續(xù)執(zhí)行,不要終止。 paramiko paramiko是基于Python實(shí)現(xiàn)的SSH2遠(yuǎn)程安全連接,支持認(rèn)證及密鑰方法??梢詫?shí)現(xiàn)遠(yuǎn)程命令執(zhí)行,文件傳輸,中間SSH代理等功能,相對于Pexpect...
摘要:是一個用于做遠(yuǎn)程控制的模塊,使用該模塊可以對遠(yuǎn)程服務(wù)器進(jìn)行命令或文件操作,值得一說的是,和內(nèi)部的遠(yuǎn)程管理就是使用的來現(xiàn)實(shí)。 paramiko paramiko是一個用于做遠(yuǎn)程控制的模塊,使用該模塊可以對遠(yuǎn)程服務(wù)器進(jìn)行命令或文件操作,值得一說的是,fabric和ansible內(nèi)部的遠(yuǎn)程管理就是使用的paramiko來現(xiàn)實(shí)。 1、下載安裝 pycrypto,由于 paramiko 模塊內(nèi)部...
摘要:子程序執(zhí)行將在新進(jìn)程中完成。要在上執(zhí)行子程序,該類將使用該函數(shù)。如果是字符串,則字符串指定要通過執(zhí)行的命令。如果是任何其他負(fù)值,則表示完全緩沖。它用于通過網(wǎng)絡(luò)進(jìn)行系統(tǒng)管理和應(yīng)用程序部署。 showImg(https://segmentfault.com/img/remote/1460000018833620); 來源 | 愿碼(ChainDesk.CN)內(nèi)容編輯 愿碼Slogan |...
摘要:創(chuàng)業(yè)公司,但也逐漸積累了十多態(tài)服務(wù)器,有時候因?yàn)橐稽c(diǎn)小疏忽,就導(dǎo)致了十多臺服務(wù)器返工,剛開始會使用一臺一臺登上去修改,或者一個一個上傳,基本上只要發(fā)生一點(diǎn)錯誤,就會花去小半天時間,這不是最重要的,最重要的是,小半天時間都在做一件重復(fù)的事鏈接 創(chuàng)業(yè)公司,但也逐漸積累了十多態(tài)服務(wù)器,有時候因?yàn)橐稽c(diǎn)小疏忽,就導(dǎo)致了十多臺服務(wù)器返工,剛開始會使用ssh一臺一臺登上去修改,或者scp、sftp一...
閱讀 2675·2019-08-30 15:52
閱讀 3620·2019-08-29 17:02
閱讀 1874·2019-08-29 13:00
閱讀 950·2019-08-29 11:07
閱讀 3267·2019-08-27 10:53
閱讀 1792·2019-08-26 13:43
閱讀 1037·2019-08-26 10:22
閱讀 1368·2019-08-23 18:06