zoukankan      html  css  js  c++  java
  • python paramiko模块

      paramiko模块提供了进行远程登陆服务器执行命令和上传下载功能。使用之前要进行安装:pip install paramiko

      (1)基于用户名和密码的连接

    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连接服务器

    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()

     

  • 相关阅读:
    【模板】线段树
    【模板】快速幂
    【模板】SPFA
    【模板】链式前向星
    C语言博客作业--函数嵌套调用
    C语言博客作业--结构体
    C博客作业--指针
    C语言博客作业--字符数组
    C语言博客作业--一二维数组
    C语言博客作业--函数
  • 原文地址:https://www.cnblogs.com/homle/p/8728048.html
Copyright © 2011-2022 走看看