python paramiko模塊

  paramiko模塊提供了進行遠程登錄服務器執行命令和上傳下載功能。使用以前要進行安裝:pip install paramikohtml

  (1)基於用戶名和密碼的鏈接ajax

import paramiko ssh = paramiko.SSHClient()    #創建一個sshclient對象
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())     #容許將信任的主機自動加入到host_allow列表
ssh.connect('10.100.46.101',22,'root','123456')    #鏈接主機
stdin,stdout,stderr = ssh.exec_command('df -h') #執行命令 print(stdout.read().decode())    #結果放到stdout中,若是有錯誤放到stderr中,必定要添加decode()
ssh.close()

  使用類封裝,同時將主機信息放到config.ini配置文件中。服務器

import paramiko import configparser class ParamikoClient(): def __init__(self,ini_file): self.ssh = paramiko.SSHClient() self.config = configparser.ConfigParser() self.config.read(ini_file) self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) self.ssh.connect(hostname=self.config.get('ssh','host'),port=self.config.getint('ssh','port'),username=self.config.get('ssh','usr'),password=self.config.get('ssh','pwd'),timeout=self.config.getfloat('ssh','timeout')) def run_command(self,cmd_str): stdin,stdout,stderr = self.ssh.exec_command(cmd_str) print(stdout.read().decode()) self.ssh.close() client = ParamikoClient('config.ini') client.run_command('df -h')

  (2)文件上傳和下載多線程

import os,sys import paramiko t = paramiko.Transport('10.100.46.101',22)    #創建一個加密的傳輸管道
t.connect(username='root',password='123456')    #創建鏈接
sftp = paramiko.SFTPClient.from_transport(t)     #創建一個sftp客戶端對象,經過ssh transport操做遠程文件 #sftp.put('config.ini','/tmp/config.ini') #上傳本地文件到遠程主機
sftp.get('/tmp/test.txt','test.txt')        #從遠程主機上下載文件到本地
t.close()

  (3)經過SSH鏈接服務器ssh

import paramiko s = paramiko.SSHClient() s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #容許鏈接不在know_hosts文件中的主機
key = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa')      #創建私鑰文件鏈接
s.connect(hostname='10.100.46.101',port=22,username='root',pkey=key)   #經過私鑰驗證的方式遠程登錄主機
stdin,stdout,stderr = s.exec_command('df -h') print(stdout.read().decode())

  (4)多線程進行文件上傳和下載加密

from threading import Thread import paramiko import configparser #使用多線程進行文件上傳和下載
class ParamikoClient(): def __init__(self,file_ini): self.t = paramiko.Transport('10.100.46.106',22) self.config = configparser.ConfigParser() self.config.read(file_ini) self.t.connect(username=self.config.get('ssh','usr'),password=self.config.get('ssh','pwd')) self.sftp = paramiko.SFTPClient.from_transport(self.t) # self.t.close()
def run_upload(): client = ParamikoClient('config1.ini') client.sftp.put('ajax01.html','/tmp/ajax02.html') client.t.close() def run_download(): client = ParamikoClient('config1.ini') client.sftp.get('/tmp/ajax01.html','ajax02.html') client.t.close() t = Thread(target=run_upload()) t1 = Thread(target=run_download()) t.start() t1.start()
相關文章
相關標籤/搜索