為什么要用Python腳本下載以及基本介紹
經常會有人需要從遠程服務器下載一些文件資源,下載個別小文件可以直接用sz等命令,但是,需要下載一個文件夾呢?sz就不行了,這時候當然可以先壓縮文件夾,然后下載,這樣也是可以的,只要文件不是很大,那么,有沒有其他辦法下載文件夾呢?辦法當然是有的,就是寫Python腳本,然后通過paramiko模塊就可以從遠程傳輸下載文件夾到本地了,是不是很方便呢……
paramiko模塊提供了ssh及sftp進行遠程登錄服務器執行命令和上傳下載文件的功能。這是一個第三方的軟件包,使用之前需要先進行安裝,我們這里主要利用sftp進行下載傳輸文件
就像下圖中的運行,可以一個一個的循環下載文件
使用時候的基本配置下面的這些信息需要自己配置一下,即初始化一些參數,包括服務器信息以及遠程文件和本地文件的存放路徑配置
# 服務器連接信息 host_name = "172.0.0.1" user_name = "root" password = "root" port = 22 # 遠程文件路徑(需要絕對路徑) remote_dir = "/data/nfs/zdlh/pdf/2018/07/31" # 本地文件存放路徑(絕對路徑或者相對路徑都可以) local_dir = "file_download/"實現源碼
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 通過paramiko從遠處服務器下載文件資源到本地 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): """遠程下載文件""" remote_file = sftp_obj.stat(remote_dir_name) if isdir(remote_file.st_mode): # 文件夾,不能直接下載,需要繼續循環 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): """本地文件夾是否存在,不存在則創建""" if not os.path.exists(local_dir_name): os.makedirs(local_dir_name) if __name__ == "__main__": """程序主入口""" # 服務器連接信息 host_name = "172.17.2.18" user_name = "dev" password = "dev@zdlh" port = 22 # 遠程文件路徑(需要絕對路徑) remote_dir = "/data/nfs/zdlh/pdf/2018/07/31" # 本地文件存放路徑(絕對路徑或者相對路徑都可以) local_dir = "file_download/" # 連接遠程服務器 t = paramiko.Transport((host_name, port)) t.connect(username=user_name, password=password) sftp = paramiko.SFTPClient.from_transport(t) # 遠程文件開始下載 down_from_remote(sftp, remote_dir, local_dir) # 關閉連接 t.close()結束語
在Python中,可以很好地利用Parmmiko的sftp完成文件傳輸操作。大家有什么疑問或者想法,可以留言或者聯系我。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42128.html
摘要:模塊為的縮寫,由的網絡小組所制定為建立在應用層基礎上的安全協議。是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。利用該模塊,可以方便的進行連接和協議進行文件傳輸。 paramiko模塊 SSH 為 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group)所制定;SSH 為建立在應用層基礎上的安全協議。SSH 是目前較可靠,專...
摘要:是基于實現的遠程安全連接,支持認證及密鑰方法。利用函數發送到,通過函數獲取回顯。如下全局屬性設定對象的作用是定義的全局設定,支持多個屬性及自定義屬性。相比確實簡化了不少。出現異常時,發出警告,繼續執行,不要終止。 paramiko paramiko是基于Python實現的SSH2遠程安全連接,支持認證及密鑰方法。可以實現遠程命令執行,文件傳輸,中間SSH代理等功能,相對于Pexpect...
摘要:是一個用于做遠程控制的模塊,使用該模塊可以對遠程服務器進行命令或文件操作,值得一說的是,和內部的遠程管理就是使用的來現實。 paramiko paramiko是一個用于做遠程控制的模塊,使用該模塊可以對遠程服務器進行命令或文件操作,值得一說的是,fabric和ansible內部的遠程管理就是使用的paramiko來現實。 1、下載安裝 pycrypto,由于 paramiko 模塊內部...
摘要:子程序執行將在新進程中完成。要在上執行子程序,該類將使用該函數。如果是字符串,則字符串指定要通過執行的命令。如果是任何其他負值,則表示完全緩沖。它用于通過網絡進行系統管理和應用程序部署。 showImg(https://segmentfault.com/img/remote/1460000018833620); 來源 | 愿碼(ChainDesk.CN)內容編輯 愿碼Slogan |...
閱讀 2642·2019-08-30 15:52
閱讀 3589·2019-08-29 17:02
閱讀 1835·2019-08-29 13:00
閱讀 910·2019-08-29 11:07
閱讀 3228·2019-08-27 10:53
閱讀 1762·2019-08-26 13:43
閱讀 1004·2019-08-26 10:22
閱讀 1307·2019-08-23 18:06