使用開源的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 ...