初識Paramiko


簡介:

paramiko是用python語言寫的一個模塊,遵循SSH2協議,支持以加密和認證的方式,進行遠程服務器的連接。跟常用軟件xshell 、xftp功能一樣,但是可以連接多台服務器,進行復雜的操作。

安裝 :

pip install PyCrypto  (PyCrypto是使用Python編寫的加密工具包)

pip install paramiko /easy_install paramiko

paramiko主要包含核心組件,一個是SSHClient類,另一個是SFTPClient類

一、SSHClient類的主要函數:

1、Connect方法

Connect實現了遠程SSH的連接並校驗。

Connect(self,hostname,port,username,password,pkey,key_filename,timeout,allow_agent,look_for_keys ,compress)

參數含義:

Hostname  str :主機ip

Port  int :端口

Username  str:用戶名

Password  str :密碼

Pkey  pkey: 秘鑰

Timeout  float: 超時時間

Allow_agent  boool :當為flase時,禁用連到ssh代理

Look_for_keys  bool : flase時,禁用在~/.ssh中搜索秘鑰文件

Compress    bool : true時打開壓縮。

2、exec_command方法

遠程命令執行的方法

exec_command(self,command,bufsize=-1)

參數:

Command  str :命令串

Bufsize  int:文件緩沖區大小,默認-1沒有限制

 

3、load_system_host_keys

加載本地公秘鑰校驗文件,默認為~/.ssh/known_hosts

 load_system_host_keys(self,filename)

fielname  str :制定遠程主機公鑰記錄文件

4、set_missing_host_key_policy

連接主機沒有本地主機秘鑰或者HostKeys對象時策略,目前支持三種:AutoAddPolicy,RejectPolicy,WarningPolicy

AutoAddPolicy:自動添加主機名以及主機秘鑰

RejectPolicy(默認):自動拒絕未知的主機名和秘鑰

WarningPolicy: 用於記錄一個未知主機秘鑰的Python警告

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

5、簡單案例

# -*-coding:utf-8-*-

import paramiko

username = 'root'

password = 'Aliyun6688xyz'

hostname = '119.29.0.208'

port = 22

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 允許連接不在know_hosts文件中的主機

ssh.connect(hostname,port,username, password)

stdin, stdout, stderr = ssh.exec_command("uptime")

print stdout.readlines()

ssh.close()

 

二、SFTPClient類——實現遠程操作文件

1、from_transport方法

創建一個已經連通的sftp客戶端通道

2、put函數

上傳文件到服務器

Put(self,localpath,remotepath,callback=none,confirm=none)

Localpath  str : 上傳文件本地源

Remotepath  str : 遠程路徑

Callback(function(int,int)) 獲取已經接受的字節數以及總傳輸字節數。

Confirm  bool : 文件上傳完畢后是否調用start()函數,以便確認文件大小。

3、get方法

從遠程主機端下載文件同put

4、其他方法

Mkdir 創建目錄 sftp.mkdr(‘/home/user’,0755)

Remove 刪除主機端指定目錄 sftp.remove(‘/home/user’)

Rename 從命名服務端的文件或者目錄 sftp.rename(“/home/test.sh”,”/home/newtest.sh”)

Listdir  獲取遠程SFTP服務器端指定的目錄列表,返回list形式  sftp.listdir(“/home”)

Stat 獲取遠程主機指定文件信息 sftp.stat(“/home/test.sh”)

5、簡單測試代碼

t = paramiko.Transport((hostname,port))

t.connect(username = username, password = password)

sftp = paramiko.SFTPClient.from_transport(t)

remotepath='/tmp/test.txt'

localpath='/test.txt'

sftp.get(localpath,remotepath)# get是獲取函數,put函數是上傳函數

t.close()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM