• paramiko 模块安装和使用


    一、Centos安装Paramiko

    1、安装组件
    yum install openssl openssl-devel python-dev   pycrypto -y
    yum install zlib-devel zlib   (必须安装,不安装会报错)
    安装zlib-devel需要对python3.5进行重新编译安装:
    cd /usr/local/src/Python-3.5.1
    ./configure
    make & make install
    2、安装setuptools-19.6: wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26 tar -zxvf setuptools-19.6.tar.gz cd setuptools-19.6 python3 setup.py build python3 setup.py install
    3、安装paramiko
    下载:http://pan.baidu.com/s/1dFKYNq5 密码:y2ml
    tar zxvf paramiko-1.14.0.tar.gz cd paramiko-1.14.0 python3 setup.py build sudo python3 setup.py install
    4、报这个错的话: ImportError: No module named 'cryptography' 安装cryptography: pip3 install cryptography
    没有pip3的话在usr/local/Python3.5.1/bin/目录找

     二、Paramiko的使用:

    1、基于账号密码的登录:

    import paramiko
    #创建SSH对象
    ssh = paramiko.SSHClient()
    #允许不在know_host文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    #连接服务器
    ssh.connect(hostname='192.168.71.3',port=22,username='root',password='zedata')
    #获取命令结果
    stdin,stdout,stderr = ssh.exec_command('df -h')
    print(stdout.read().decode())  #输出结果
    print(stderr.read().decode())  #输出错误结果
    ssh.close()

    2、基于公钥的连接:

    import paramiko
    
    private_key = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa')
    
    # 创建SSH对象
    ssh = paramiko.SSHClient()
    # 允许连接不在know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 连接服务器
    ssh.connect(hostname='192.168.71.2', port=22, username='root', pkey=private_key)   #注若遇到TypeError: connect() got an unexpected keyword argument 'key' 这个错误,将key改为pkey。
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command('df')
    # 获取命令结果
    print(stdout.read().decode())
    # 关闭连接
    ssh.close()

    3、基于用户名密码上传下载

    import paramiko
     
    transport = paramiko.Transport(('192.168.71.3',22))
    transport.connect(username='root',password='123')
     
    sftp = paramiko.SFTPClient.from_transport(transport)
    # 将location.py 上传至服务器 /tmp/test.py
    sftp.put('/tmp/location.py', '/tmp/test.py')
    # 将remove_path 下载到本地 local_path
    sftp.get('remove_path', 'local_path')
     
    transport.close()

    4、基于公钥密钥上传下载

    import paramiko
     
    private_key = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa')
     
    transport = paramiko.Transport(('192.168.71.3', 22))
    transport.connect(username='root', pkey=private_key )
     
    sftp = paramiko.SFTPClient.from_transport(transport)
    # 将location.py 上传至服务器 /tmp/test.py
    sftp.put('/tmp/location.py', '/tmp/test.py')
    # 将remove_path 下载到本地 local_path
    sftp.get('remove_path', 'local_path')
     
    transport.close()

     Paramiko升级(Centos):

    注:有时候paramiko的版本低会出现这个报错:paramiko.SSHException: Incompatible ssh peer (no acceptable kex algorithm)

    pip install --upgrade pip
    pip install paramiko --upgrade
  • 相关阅读:
    static心得
    建库注意
    Django之模板层
    Django之视图层
    Django之路由层
    Django开篇
    HTTP协议——详细版
    前端之bootstrap
    前端之Jquery
    前端之BOM和DOM
  • 原文地址:https://www.cnblogs.com/chimeiwangliang/p/7193187.html
Copyright © 2020-2023  润新知