Python使用paramiko操作linux的方法講解
paramiko介紹
paramiko是一個(gè)基于python編寫的、使用ssh協(xié)議的模塊,跟xshell和xftp功能類似,支持加密與認(rèn)證,可以上傳下載和訪問服務(wù)器的文件。
可以利用paramiko模塊寫服務(wù)器腳本,在本地執(zhí)行,比如持續(xù)更新代碼,查看日志,批量配置集群等。
paramiko 主要包含SSHClient和SFTPClient兩個(gè)組件:
SSHClient
ssh服務(wù)會(huì)話的表示,通常用來(lái)執(zhí)行命令,主要有connect、exec_command、load_system_host_keys和set_missing_host_key_policy方法。
- connect:建立SSH遠(yuǎn)程連接并校驗(yàn)。
- exec_command:執(zhí)行指令并返回結(jié)果。
- load_system_host_keys:加載本地公鑰校驗(yàn)文件。
- set_missing_host_key_policy:遠(yuǎn)程主機(jī)沒有本地主機(jī)密鑰或HostKeys時(shí)的策略。
SFTPClient
SFTP客戶端對(duì)象,實(shí)現(xiàn)遠(yuǎn)程文件操作,主要有from_transport、put、get、Mkdir、remove、rename、stat、listdir等方法。
- from_transport:從已通過驗(yàn)證的傳輸對(duì)象簡(jiǎn)歷連接。
- put:上傳本地文件到服務(wù)器上。
- get:從服務(wù)器下載文件到本地。
- Mkdir、remove、rename、stat、listdir:創(chuàng)建目錄、刪除目錄、重命名文件或目錄、獲取文件信息、獲取指定目錄中的列表。
安裝與使用
安裝
pip install paramiko
執(zhí)行l(wèi)inux命令
import paramiko #服務(wù)器信息,主機(jī)名(IP地址)、端口號(hào)、用戶名及密碼 hostname = "xxx.xxx.xx.170" port = 11022 username = "rdadmin" password = "818" #創(chuàng)建SSH對(duì)象 client = paramiko.SSHClient() #自動(dòng)添加策略,保存服務(wù)器的主機(jī)名和密鑰信息 client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #連接服務(wù)器 client.connect(hostname, port, username, password, compress=True) # 執(zhí)行l(wèi)inux命令 stdin, stdout, stderr = client.exec_command('ls /') for line in stdout: print('... ' + line.strip('\n')) #or print(stdout.readlines())
訪問linux上的文件
import paramiko hostname = "192.168.0.1" port = 22 username = "root" password = "root" client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(hostname, port, username, password, compress=True) sftp_client = client.open_sftp() remote_file = sftp_client.open("/home/verified_list.txt") #文件路徑 try: for line in remote_file: print(line.strip()) finally: remote_file.close()
上傳到linux與從linux下載文件
import paramiko hostname = 192.168.0.1 port = 22 username = "root" password = "root" transport = paramiko.Transport((hostname, port)) transport.connect(username = username, password = password) sftp = paramiko.SFTPClient.from_transport(transport) # 下載文件 sftp.get("/home/share/video.mp4","./視頻文件下載/") #上傳文件 sftp.put("./video.mp4","/home/share/video.mp4") sftp.close()
與linux的交互操作
通過SSHClient的invoke_shell方法,可以創(chuàng)建一個(gè)交互會(huì)話的對(duì)象,和exec_command方法不同的是,這個(gè)可以實(shí)現(xiàn)命令交互,比如先cd到某個(gè)目錄下,再執(zhí)行腳本操作,然后退出,這種需要多個(gè)步驟的操作。
import paramiko hostname = "192.168.0.1" port = 22 username = "root" password = "root" client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(hostname, port, username, password, compress=True) channel = client.invoke_shell() # 在SSH server端創(chuàng)建一個(gè)交互式的shell command = "" channel.send(command + '\n') time.sleep(10) stdout = channel.recv(1024*100000) out_list = stdout.decode().split("\n") client.close()
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
- Python基于模塊Paramiko實(shí)現(xiàn)SSHv2協(xié)議
- python使用paramiko實(shí)現(xiàn)ssh的功能詳解
- python 采用paramiko 遠(yuǎn)程執(zhí)行命令及報(bào)錯(cuò)解決
- Python paramiko模塊使用解析(實(shí)現(xiàn)ssh)
- Python操作遠(yuǎn)程服務(wù)器 paramiko模塊詳細(xì)介紹
- python使用paramiko模塊通過ssh2協(xié)議對(duì)交換機(jī)進(jìn)行配置的方法
- python通過paramiko復(fù)制遠(yuǎn)程文件及文件目錄到本地
- Python使用Paramiko控制linux第三方庫(kù)
相關(guān)文章
python模塊之sys模塊和序列化模塊(實(shí)例講解)
下面小編就為大家?guī)?lái)一篇python模塊之sys模塊和序列化模塊(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-09-09python pandas庫(kù)的安裝和創(chuàng)建
這篇文章主要介紹了python pandas庫(kù)的安裝和創(chuàng)建,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2019-01-01python 環(huán)境變量和import模塊導(dǎo)入方法(詳解)
下面小編就為大家?guī)?lái)一篇python 環(huán)境變量和import模塊導(dǎo)入方法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-07-07Scrapy中如何向Spider傳入?yún)?shù)的方法實(shí)現(xiàn)
這篇文章主要介紹了Scrapy中如何向Spider傳入?yún)?shù)的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09詳解python關(guān)于多級(jí)包之間的引用問題
本文主要介紹了python關(guān)于多級(jí)包之間的引用問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-08-08對(duì)Python3中列表乘以某一個(gè)數(shù)的示例詳解
今天小編就為大家分享一篇對(duì)Python3中列表乘以某一個(gè)數(shù)的示例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-07-07用python統(tǒng)計(jì)代碼行的示例(包括空行和注釋)
今天小編就為大家分享一篇用python統(tǒng)計(jì)代碼行的示例(包括空行和注釋),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2018-07-07