• python 3 并发编程多进程 paramiko 模块


    python 3 paramiko模块

    paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实。

    在python3中安装

    pip3 install paramiko

    pycrypto,由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto #在python2中
    
    pip3 install pycrypto
    
    pip3 install paramiko
    
    注:如果在安装pycrypto2.0.1时发生如下错误
    
            command 'gcc' failed with exit status 1...
    
    可能是缺少python-dev安装包导致
    
    如果gcc没有安装,请事先安装gcc
    在python2安装

     SSHClient

    用于连接远程服务器并执行基本命令:

    import paramiko
    # 创建SSH对象
    ssh = paramiko.SSHClient()
    # 允许连接不在know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 连接服务器
    ssh.connect(hostname='10.100.12.251', port=22, username='root', password='123456')
    
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command('df')
    # 获取命令结果
    result = stdout.read()
    print(result.decode('utf-8'))
    # 关闭连接
    ssh.close()
    基于用户名密码连接
    import paramiko
    
    private_key = paramiko.RSAKey.from_private_key_file('/tmp/id_rsa')
    
    transport = paramiko.Transport(('10.100.12.251', 22))
    
    transport.connect(username='root', pkey=private_key)
    
    ssh = paramiko.SSHClient()
    
    ssh._transport = transport
    
    stdin, stdout, stderr = ssh.exec_command('df')
    
    result=stdout.read()
    
    print(result.decode('utf-8'))
    
     
    
    transport.close()
    SSHClient 封装 Transport
    import paramiko
    
    from io import StringIO
    
    key_str = """-----BEGIN RSA PRIVATE KEY-----
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    -----END RSA PRIVATE KEY-----"""
    private_key = paramiko.RSAKey(file_obj=StringIO(key_str))
    
    transport = paramiko.Transport(('10.100.12.251', 22))
    
    transport.connect(username='root', pkey=private_key)
    
    
    ssh = paramiko.SSHClient()
    
    ssh._transport = transport
    
    
    stdin, stdout, stderr = ssh.exec_command('df')
    
    result = stdout.read()
    
    print(result.decode('utf-8'))
    
    transport.close()
    
    
    
    print(result)
    基于私钥字符串进行连接 

    SFTPClient

    用于连接远程服务器并执行上传下载

    import paramiko
    
     
    transport = paramiko.Transport(('10.100.12.251',22))
    
    transport.connect(username='root',password='123456')
    
    
    sftp = paramiko.SFTPClient.from_transport(transport)
    
    # 将location.py 上传至服务器 /tmp/test.py
    
    sftp.put('/tmp/id_rsa', '/etc/test.rsa')
    
    # 将remove_path 下载到本地 local_path
    
    sftp.get('remove_path', 'local_path')
    
     
    
    transport.close()
    基于用户名密码上传下载
    import paramiko
     
    transport = paramiko.Transport(('10.100.12.251',22))
    transport.connect(username='root',password='xxx')
     
    sftp = paramiko.SFTPClient.from_transport(transport)
    # 将location.py 上传至服务器 /tmp/test.py
    sftp.put('/tmp/id_rsa', '/etc/test.rsa')
    # 将remove_path 下载到本地 local_path
    sftp.get('remove_path', 'local_path')
     
    transport.close()
    基于公钥密钥上传下载
  • 相关阅读:
    ik_max_word ik_smart
    使用elasticsearch遇到的一些问题以及解决方法(不断更新)
    Install elasticsearch-head: – for Elasticsearch 5.x
    Spring实战5-基于Spring构建Web应用
    如何使用 Android Studio 的 git hub 功能
    windows中使用Git工具连接GitHub(配置篇)
    Git链接到自己的Github(2)进阶使用
    Git链接到自己的Github(1)简单的开始
    Android 自定义控件玩转字体变色 打造炫酷ViewPager指示器
    Android Studio 中快速提取方法
  • 原文地址:https://www.cnblogs.com/qiangyuge/p/7450395.html
Copyright © 2020-2023  润新知