最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python paramiko模塊學(xué)習(xí)分享

 更新時間:2017年08月23日 10:21:17   作者:laay  
這篇文章主要為大家分享了python paramiko模塊的學(xué)習(xí)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

paramiko是用python語言寫的一個模塊,遵循SSH2協(xié)議,支持以加密和認(rèn)證的方式,進(jìn)行遠(yuǎn)程服務(wù)器的連接。paramiko支持Linux, Solaris, BSD, MacOS X, Windows等平臺通過SSH從一個平臺連接到另外一個平臺。利用該模塊,可以方便的進(jìn)行ssh連接和sftp協(xié)議進(jìn)行sftp文件傳輸。

首先讓我們理清以下幾個名詞:

SSHClient:包裝了Channel、Transport、SFTPClient
Channel:是一種類Socket,一種安全的SSH傳輸通道;
Transport:是一種加密的會話(但是這樣一個對象的Session并未建立),并且創(chuàng)建了一個加密的tunnels,這個tunnels叫做Channel;
Session:是client與Server保持連接的對象,用connect()/start_client()/start_server()開始會話.

paramiko 參考http://docs.paramiko.org/en/2.0/index.html 

下載安裝

pycrypto,由于 paramiko 模塊內(nèi)部依賴pycrypto,所以先下載安裝pycrypto

pip3 install pycrypto
pip3 install paramiko 

具體模塊使用 

SSHClient:

遠(yuǎn)程連接分為兩種:(1)基于用戶名密碼連接 (2)基于公鑰秘鑰連接

通過是用paramiko遠(yuǎn)程操作,其實本質(zhì)也分為兩種:(1)只用SSHClient (2)自己創(chuàng)建一個transport 

基于用戶名密碼連接 

import paramiko
 
# 創(chuàng)建SSH對象
ssh = paramiko.SSHClient()
# 允許連接不在know_hosts文件中的主機
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 連接服務(wù)器
ssh.connect(hostname='host', port=22, username='root', password='123')
# 執(zhí)行命令  stdout命令結(jié)果,stderr錯誤
stdin, stdout, stderr = ssh.exec_command('ls')
# 獲取命令結(jié)果 
result = stdout.read()
# 關(guān)閉連接
ssh.close()

SSHClient 封裝 Transport

import paramiko
 
transport = paramiko.Transport(('hostname', 22))
transport.connect(username='root', password='123')
 
ssh = paramiko.SSHClient()
ssh._transport = transport
 
stdin, stdout, stderr = ssh.exec_command('df')
print(stdout.read())
 
transport.close()

基于公鑰秘鑰連接

import paramiko
 
private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
# 創(chuàng)建SSH對象
ssh = paramiko.SSHClient()
# 允許連接不在know_hosts文件中的主機
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 連接服務(wù)器
ssh.connect(hostname='host', port=22, username='root', key=private_key)
# 執(zhí)行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 獲取命令結(jié)果
result = stdout.read()
# 關(guān)閉連接
ssh.close()

SSHClient 封裝Transport

import paramiko
 
private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
transport = paramiko.Transport(('hostname', 22))
transport.connect(username='wupeiqi', pkey=private_key)
ssh = paramiko.SSHClient()
ssh._transport = transport
stdin, stdout, stderr = ssh.exec_command('df')
transport.close()

SFTPClient:

用于連接遠(yuǎn)程服務(wù)器并進(jìn)行上傳下載功能。

基于用戶名密碼上傳下載

import paramiko
 
transport = paramiko.Transport(('hostname',22))
transport.connect(username='root',password='123')
 
sftp = paramiko.SFTPClient.from_transport(transport)
# 將location.py 上傳至服務(wù)器 /tmp/test.py
sftp.put('/tmp/location.py', '/tmp/test.py')
# 將remove_path 下載到本地 local_path
sftp.get('remove_path', 'local_path')
 
transport.close()

基于公鑰秘鑰上傳下載

import paramiko
 
private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
 
transport = paramiko.Transport(('hostname', 22))
transport.connect(username='root', pkey=private_key )
 
sftp = paramiko.SFTPClient.from_transport(transport)
# 將location.py 上傳至服務(wù)器 /tmp/test.py
sftp.put('/tmp/location.py', '/tmp/test.py')
# 將remove_path 下載到本地 local_path
sftp.get('remove_path', 'local_path')
 
transport.close()

Demo: 實現(xiàn)遠(yuǎn)程命令執(zhí)行和文件上傳

import paramiko
 
class SSHConnection(object):
 
  def __init__(self, host='192.168.12.68', port=22, username='locojoy',pwd='123321QQ!'):
    self.host = host
    self.port = port
    self.username = username
    self.pwd = pwd
    self.__k = None
 
  def run(self):
    self.connect() # 連接遠(yuǎn)程服務(wù)器
    self.upload('db.py','/tmp/1.py') # 將本地的db.py文件上傳到遠(yuǎn)端服務(wù)器的/tmp/目錄下并改名為1.py
    self.cmd('df') # 執(zhí)行df 命令
    self.close()  # 關(guān)閉連接
 
  def connect(self):
    transport = paramiko.Transport((self.host, self.port))
    transport.connect(username=self.username, password=self.pwd)
    self.__transport = transport
 
  def close(self):
    self.__transport.close()
 
  def upload(self,local_path,target_path):
    sftp = paramiko.SFTPClient.from_transport(self.__transport)
    sftp.put(local_path,target_path)
 
  def cmd(self, command):
    ssh = paramiko.SSHClient()
    ssh._transport = self.__transport
    # 執(zhí)行命令
    stdin, stdout, stderr = ssh.exec_command(command)
    # 獲取命令結(jié)果
    result = stdout.read()
    print(result)
    return result
 
obj = SSHConnection()
obj.run()


以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

阿瓦提县| 广水市| 永康市| 岐山县| 额尔古纳市| 临汾市| 芦溪县| 古蔺县| 六枝特区| 东乡族自治县| 定陶县| 璧山县| 大埔区| 湟中县| 洛浦县| 尖扎县| 堆龙德庆县| 蛟河市| 阿鲁科尔沁旗| 紫金县| 汉寿县| 洛阳市| 卢湾区| 大同县| 香河县| 丁青县| 安阳县| 唐海县| 隆昌县| 威海市| 东乡| 从江县| 长沙市| 肥东县| 定州市| 钟山县| 满洲里市| 德江县| 苏尼特左旗| 都兰县| 阜阳市|