標籤:paramiko簡單使用
paramiko是基於python實現的ssh2遠程安全連線,支援認證及密鑰方式。可以實現遠程命令執行,檔案傳輸、中間ssh代理等功能。
安裝:
pip install paramiko或 easy_install paramiko
paramiko依賴第三方的Crypto,Ecdsa和pyhton-devel
核心組件:SSHclient類
方法:
connect():遠程ssh串連並作校正
參數:
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 是否開啟壓縮
sock=None
gss_auth=False
gss_kex=False
gss_deleg_creds=True
gss_host=None
banner_timeout=None
exec_command():用於遠程執行命令,該命令的輸入與輸出資料流為標準輸入、標出輸出、標準錯誤輸出
參數:
command 執行的命令
bufsize=-1 檔案緩衝區大小
timeout=None 設定逾時時間
get_pty=False
load_system_host_key():裝載系統公開金鑰,預設為~/.ssh/known_hosts
參數:
set_missing_host_key_policy():設定串連的遠程主機沒有本地主機密鑰或HostKeys對象時的策略,目前支援三種,也就是參數只有三個。
參數:
AutoAddPolicy 自動添加主機名稱及主機密鑰到本地的known_hosts,不依賴load_system_host_key的配置。即建立立ssh串連時不需要再輸入yes或no進行確認
WarningPolicy 用於記錄一個未知的主機密鑰的python警告。並接受,功能上和AutoAddPolicy類似,但是會提示是新串連
RejectPolicy 自動拒絕未知的主機名稱和密鑰,依賴load_system_host_key的配置。此為預設選項
用法:
set_missing_host_key_policy(paramiko.AutoAddPolicy())
SFTPClient類
SFTPCLient作為一個sftp的用戶端對象,根據ssh傳輸協議的sftp會話,實現遠程檔案操作,如上傳、下載。
方法:
from_transport(cls,t) 建立一個已連通的SFTP用戶端通道
put(localpath, remotepath, callback=None, confirm=True) 將本地檔案上傳到伺服器 參數confirm:是否調用stat()方法檢查檔案狀態,返回ls -l的結果
get(remotepath, localpath, callback=None) 從伺服器下載檔案到本地
mkdir() 在伺服器上建立目錄
remove() 在伺服器上刪除目錄
rename() 在伺服器上重新命名目錄
stat() 查看伺服器檔案狀態
listdir() 列出伺服器目錄下的檔案
使用ssh運行命令,採用純文字密碼認證方式,通過exec_command()方法執行命令,樣本如下
#!/usr/bin/env python#coding=utf-8 import paramiko hostname='172.31.101.61' username='root' password='[email protected]' paramiko.util.log_to_file('syslogin.log') #發送paramik日誌到syslogin.log檔案 ssh=paramiko.SSHClient() #建立一個ssh用戶端client對象 ssh.load_system_host_keys() #擷取用戶端host_keys,預設~/.ssh/known_hosts,非預設路徑需指定 ssh.connect(hostname=hostname,username=username,password=password) #建立ssh串連 stdin,stdout,stderr=ssh.exec_command('free -m') #調用遠程執行命令方法exec_command() print stdout.read() #列印命令執行結果,得到python列表形式,可以用stdout.readlinses() ssh.close() #關閉ssh串連
python學習-paramiko簡單使用