日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

【Python】Paramiko模块实现Linux服务器远程文件操作

發(fā)布時(shí)間:2025/3/15 linux 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python】Paramiko模块实现Linux服务器远程文件操作 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

ssh是一個(gè)協(xié)議,OpenSSH是其中一個(gè)開源實(shí)現(xiàn),paramiko是Python的一個(gè)庫,實(shí)現(xiàn)了SSHv2協(xié)議(底層使用cryptography)。
有了Paramiko以后,我們就可以在Python代碼中直接使用SSH協(xié)議對遠(yuǎn)程服務(wù)器執(zhí)行操作,而不是通過ssh命令對遠(yuǎn)程服務(wù)器進(jìn)行操作。
由于paramiko屬于第三方庫,所以需要使用如下命令先行安裝
pip install paramiko

底層cryptography:加密解密模塊,cryptography 的目標(biāo)是成為“人類易于使用的密碼學(xué)包c(diǎn)ryptography for humans”,這個(gè)想法使你能夠創(chuàng)建簡單安全、易于使用的加密方案。需要先安裝:
pip install cryptography
如果已經(jīng)安裝過,可以通過pip install --user -I cryptography

paramiko包含兩個(gè)核心組件:SSHClient和SFTPClient。
SSHClient的作用類似于Linux的ssh命令,是對SSH會話的封裝,該類封裝了傳輸(Transport),通道(Channel)及SFTPClient建立的方法(open_sftp),通常用于執(zhí)行遠(yuǎn)程命令。
SFTPClient的作用類似與Linux的sftp命令,是對SFTP客戶端的封裝,用以實(shí)現(xiàn)遠(yuǎn)程文件操作,如文件上傳、下載、修改文件權(quán)限等操作。

# Paramiko中的幾個(gè)基礎(chǔ)名詞:
1、Channel:是一種類Socket,一種安全的SSH傳輸通道;
2、Transport:是一種加密的會話,使用時(shí)會同步創(chuàng)建了一個(gè)加密的Tunnels(通道),這個(gè)Tunnels叫做Channel;
3、Session:是client與Server保持連接的對象,用connect()/start_client()/start_server()開始會話。

SFTPCLient作為一個(gè)sftp的客戶端對象,根據(jù)ssh傳輸協(xié)議的sftp會話,實(shí)現(xiàn)遠(yuǎn)程文件操作,如上傳、下載、權(quán)限、狀態(tài)
put(self, localpath, remotepath, callback=None, confirm=True) ? 上傳文件到服務(wù)器
get(self, remotepath, localpath, callback=None) ? ?下載服務(wù)器的文件
remove(self, path) ? 刪除服務(wù)器文件
rename(self, oldpath, newpath) ?重命名服務(wù)器上的文件
mkdir(self, path, mode=o777) ? ?在服務(wù)器創(chuàng)建文件夾

from datetime import datetime import paramiko import osclass SftpDeal():def __init__(self):self.hostname = 'ip'self.username = 'username 'self.password = 'password 'self.port = 22try:self.conn = paramiko.Transport((self.hostname, self.port)) # 獲取Transport實(shí)例self.conn.connect(username=self.username, password=self.password) # 連接SSH服務(wù)端,使用passwordself.sftp_ob = paramiko.SFTPClient.from_transport(self.conn) # 獲取SFTP實(shí)例except Exception as e:print(e)# 上傳文件,local_file-本地目錄;remote_path-遠(yuǎn)程目錄def upload(self,local_file,remote_path):try:self.sftp_ob.put(local_file, remote_path)except Exception as e:self.sftp_ob.mkdir(os.path.split(remote_path)[0])self.sftp_ob.put(local_file, remote_path)print("從本地: %s 上傳到: %s" % (local_file, remote_path))print(remote_path + ' 文件上傳成功 %s ' % datetime.now().strftime('%Y-%m-%d %H:%M:%S'))#self.conn.close()def download(self,remote_path,local_file):try:self.sftp_ob.get(remote_path,local_file)except Exception as e:self.sftp_ob.mkdir(os.path.split(local_file)[0])self.sftp_ob.get(remote_path, local_file)print("從服務(wù)器: %s 下載到: %s" % (remote_path,local_file ))print(remote_path,'文件下載成功 %s ' % datetime.now().strftime('%Y-%m-%d %H:%M:%S'))self.conn.close()def remove(self,remote_path):try:self.sftp_ob.remove(remote_path)print(remote_path + ' 文件刪除成功 %s ' % datetime.now().strftime('%Y-%m-%d %H:%M:%S'))except:print('服務(wù)器上面無文件:%s'% (remote_path))#self.conn.close()

?

總結(jié)

以上是生活随笔為你收集整理的【Python】Paramiko模块实现Linux服务器远程文件操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。