python之自動化運維 Paramiko

2021-10-02 11:06:41 字數 3245 閱讀 2989

使用開源的paramiko,我們就可以用python**中通過ssh協議對遠端伺服器執行操作,不需要手敲ssh命令,從而實現自動化運維。

ssh是乙個協議,openssh是其中乙個開源實現,paramiko庫,實現了sshv2協議(底層使用cryptography)。

專案文件:點我跳轉

擴充套件:ssh協議,openssh

1、安裝

pip install paramiko
2、匯入模組

import paramiko
3、使用

def

initsshclinet()

:'''

初始化,ssh連線賬號密碼登入伺服器

:return: sshclinet

'''ip =

""#伺服器ip位址

sshclinet = paramiko.sshclient(

) sshclinet.set_missing_host_key_policy(paramiko.autoaddpolicy())

sshclinet.connect(ip,

22, username, pw, timeout=

360)

return sshclinet

def

execommond

(commond)

:'''

執行shell命令

'''stdin, stdout, stderr = sshclient.exec_command(command)

outstr = stdout.readlines(

)print

("\n"

.join(outstr)

)

def

sftpuploadfile

(localpath, remotepath)

:#獲取sftp例項

sftp = sshclinet.open_sftp(

)#執行上傳動作

sftp.put(localpath, remotepath)

defsftpdownloadfile

(localpath, remotepath)

:#獲取sftp例項

sftp = sshclinet.open_sftp(

) sftp.get(localpath, remotepath)

末尾記得要關閉連線

sshclient.close(

)

也可以使用私鑰登入:

# 配置私人金鑰檔案位置

private = paramiko.rsakey.from_private_key_file(

'/users/ch/.ssh/id_rsa'

)#例項化sshclient

client = paramiko.sshclient(

)#自動新增策略,儲存伺服器的主機名和金鑰資訊,如果不新增,那麼不再本地know_hosts檔案中記錄的主機將無法連線

client.set_missing_host_key_policy(paramiko.autoaddpolicy())

#連線ssh服務端,以使用者名稱和密碼進行認證

client.connect(hostname=

'10.0.0.1'

,port=

22,username=

'root'

,pkey=private)

paramiko包含兩個核心元件:sshclient和sftpclient。 名詞

解釋channel

是一種類socket,一種安全的ssh傳輸通道

transport

是一種加密的會話,使用時會同步建立了乙個加密的tunnels(通道),這個tunnels叫做channel

session

是client與server保持連線的物件,用connect()/start_client()/start_server()開始會話

connect():實現遠端伺服器的連線與認證,對於該方法只有hostname是必傳引數。

引數說明

hostname

連線的目標主機

port=ssh_port

指定埠

username=none

驗證的使用者名稱

password=none

驗證的使用者密碼

pkey=none

私鑰方式用於身份驗證

key_filename=none

乙個檔名或檔案列表,指定私鑰檔案

timeout=none

可選的tcp連線超時時間

allow_agent=true

是否允許連線到ssh**,預設為true 允許

look_for_keys=true

是否在~/.ssh中搜尋私鑰檔案,預設為true 允許

compress=false

是否開啟壓縮

set_missing_host_key_policy():設定遠端伺服器沒有在know_hosts檔案中記錄時的應對策略。傳入missinghostkeypolicy的子類,目前支援三種策略:

設定連線的遠端主機沒有本地主機金鑰或hostkeys物件時的策略,目前支援三種:

missinghostkeypolicy的子類

說明autoaddpolicy

自動新增主機名及主機金鑰到本地hostkeys物件,不依賴load_system_host_key的配置。即新建立ssh連線時不需要再輸入yes或no進行確認

warningpolicy

用於記錄乙個未知的主機金鑰的python警告。並接受,功能上和autoaddpolicy類似,但是會提示是新連線

rejectpolicy

自動拒絕未知的主機名和金鑰,依賴load_system_host_key的配置。此為預設選項

exec_command():在遠端伺服器執行linux命令的方法。

open_sftp():在當前ssh會話的基礎上建立乙個sftp會話。該方法會返回乙個sftpclient物件。

本文由部落格一文多發平台 openwrite 發布!

運維自動化

1,cobbler安裝環境準備 安裝epel epel release 6 8.noarch.rpm x86 64 epel release 6 8.noarch.rpm x86 安裝系列依賴環境 要是區域網用,建議關閉iptables 或是放行25151 80 69埠 和關閉selinux 檢視狀...

自動化運維

考慮的因素 源 打包為映象 發布到映象庫 利用k8s發布到物理機器執行,以服務的形式對外提供服務 目前的做法 0 建立乙個執行遠端命令的框架 1 每個應用建立乙個部署檔案指令碼 a 指定元 位址 c 同步源 到目標主機 d 接受指令碼引數 vername 2 版本號,映象tag fromport 3...

Python 自動化運維 pycurl

web服務質量 1.服務可用性 2.服務響應速度 2.例項 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ...