python通過(guò)paramiko復(fù)制遠(yuǎn)程文件及文件目錄到本地
最近寫運(yùn)維自動(dòng)化平臺(tái),需要用python寫很多的小功能模塊。
這里就分享一個(gè)用Python的paramiko來(lái)實(shí)現(xiàn)功能的一段代碼:
復(fù)制遠(yuǎn)程服務(wù)器上的文件及文件夾到本地目錄。
解釋一下什么叫paramiko:
paramiko是用python寫的一個(gè)模塊,遵循SSH2協(xié)議,支持以加密和認(rèn)證的方式,進(jìn)行遠(yuǎn)程服務(wù)器的連接。利用該模塊,可以方便的進(jìn)行ssh連接和sftp協(xié)議進(jìn)行sftp文件傳輸以及遠(yuǎn)程命令執(zhí)行。
安裝paramiko也很簡(jiǎn)單,我用的是python3,裝好了pip,可以直接用pip來(lái)安裝。
不過(guò)由于 paramiko 模塊內(nèi)部依賴pycrypto,所以先下載安裝pycrypto:
pip3 install pycrypto pip3 install paramiko
好了。我定義一個(gè)方法,用于遠(yuǎn)程復(fù)制文件。代碼如下:
import os import paramiko def RemoteScp(host_ip, host_port, host_username, host_password, remote_file, local_file): scp = paramiko.Transport((host_ip, host_port)) scp.connect(username=host_username, password=host_password) sftp = paramiko.SFTPClient.from_transport(scp) sftp.get(remote_file, local_file) scp.close() return ("success")
注意這里的語(yǔ)句:
sftp.get(remote_file, local_file)中自帶的get方法,只能拷貝文件目錄,不能拷貝文件夾。
然后調(diào)用這個(gè)方法:
if __name__ == '__main__': host_ip = '192.168.1.123' host_port = 22 host_username = 'root' host_password = 'password' remote_path = '/tmp/test.sql' local_path = '/tmp/test.sql' RemoteScp(host_ip, host_port, host_username, host_password, remote_path, local_path)
這就是基本遠(yuǎn)程文件復(fù)制的功能實(shí)現(xiàn)。這里只能實(shí)現(xiàn)文件對(duì)文件的遠(yuǎn)程復(fù)制。
如果我們要遠(yuǎn)程復(fù)制整個(gè)文件夾。需要對(duì)上面的方法改進(jìn)一下,加一段循環(huán),讓其能遍歷遠(yuǎn)程目錄里的所有文件,然后按照上面的方法依次復(fù)制到本地。
我在代碼中加了一些注釋。修改以后的完整代碼如下:
import os import paramiko def RemoteScp(host_ip, host_port, host_username, host_password, remote_path, local_path): scp = paramiko.Transport((host_ip, host_port)) scp.connect(username=host_username, password=host_password) sftp = paramiko.SFTPClient.from_transport(scp) try: remote_files = sftp.listdir(remote_path) for file in remote_files: #遍歷讀取遠(yuǎn)程目錄里的所有文件 local_file = local_path + file remote_file = remote_path + file sftp.get(remote_file, local_file) except IOError: # 如果目錄不存在則拋出異常 return ("remote_path or local_path is not exist") scp.close() if __name__ == '__main__': host_ip = '192.168.1.123' # 遠(yuǎn)程服務(wù)器IP host_port = 22 # 遠(yuǎn)程服務(wù)器端口 host_username = 'root' #遠(yuǎn)程服務(wù)器用戶名 host_password = 'password' #遠(yuǎn)程服務(wù)器密碼 remote_path = '/tmp/' #這個(gè)是遠(yuǎn)程目錄 local_path = '/tmp/' #這個(gè)是本地目錄 RemoteScp(host_ip, host_port, host_username, host_password, remote_path, local_path) #調(diào)用方法
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 解決Python paramiko 模塊遠(yuǎn)程執(zhí)行ssh 命令 nohup 不生效的問(wèn)題
- Python使用Paramiko控制linux第三方庫(kù)
- Python基于模塊Paramiko實(shí)現(xiàn)SSHv2協(xié)議
- Python如何使用paramiko模塊連接linux
- python使用paramiko實(shí)現(xiàn)ssh的功能詳解
- 使用Python paramiko模塊利用多線程實(shí)現(xiàn)ssh并發(fā)執(zhí)行操作
- python 采用paramiko 遠(yuǎn)程執(zhí)行命令及報(bào)錯(cuò)解決
- Python操作遠(yuǎn)程服務(wù)器 paramiko模塊詳細(xì)介紹
- python基于paramiko將文件上傳到服務(wù)器代碼實(shí)現(xiàn)
- python Paramiko使用示例
相關(guān)文章
pyqt5與matplotlib的完美結(jié)合實(shí)例
今天小編就為大家分享一篇pyqt5與matplotlib的完美結(jié)合實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06python學(xué)習(xí)教程之使用py2exe打包
py2exe是一個(gè)將python腳本轉(zhuǎn)換成windows上的可獨(dú)立執(zhí)行的可執(zhí)行程序(*.exe)的工具,下面這篇文章主要給大家介紹了關(guān)于python學(xué)習(xí)教程之使用py2exe打包的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09python?實(shí)現(xiàn)銀行卡號(hào)查詢銀行名稱和簡(jiǎn)稱功能
這篇文章主要介紹了python?實(shí)現(xiàn)銀行卡號(hào)查詢銀行名稱和簡(jiǎn)稱功能,本文通過(guò)實(shí)例代碼補(bǔ)充介紹了基于PyQT5+OpenCv實(shí)現(xiàn)銀行卡號(hào)識(shí)別功能,感興趣的朋友一起看看吧2023-11-11PyCharm在新窗口打開(kāi)項(xiàng)目的方法
今天小編就為大家分享一篇PyCharm在新窗口打開(kāi)項(xiàng)目的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01python基于OpenCV模塊實(shí)現(xiàn)視頻流數(shù)據(jù)切割為圖像幀數(shù)據(jù)(流程分析)
這篇文章主要介紹了python基于OpenCV模塊實(shí)現(xiàn)視頻流數(shù)據(jù)切割為圖像幀數(shù)據(jù),這里今天主要是實(shí)踐一下視頻流數(shù)據(jù)的預(yù)處理工作,需要的朋友可以參考下2022-05-05python -v 報(bào)錯(cuò)問(wèn)題的解決方法
在本篇文章里小編給大家整理了關(guān)于python -v 報(bào)錯(cuò)問(wèn)題的解決方法及相關(guān)知識(shí)點(diǎn),有興趣的朋友們可以學(xué)習(xí)下。2020-09-09python?sklearn與pandas實(shí)現(xiàn)缺失值數(shù)據(jù)預(yù)處理流程詳解
對(duì)于缺失值的處理,主要配合使用sklearn.impute中的SimpleImputer類、pandas、numpy。其中由于pandas對(duì)于數(shù)據(jù)探索、分析和探查的支持較為良好,因此圍繞pandas的缺失值處理較為常用2022-09-09python3 中使用urllib問(wèn)題以及urllib詳解
這篇文章主要介紹了python3 中使用urllib問(wèn)題以及urllib詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08