zoukankan      html  css  js  c++  java
  • 审计系统---paramiko模块学习

    paramiko模块学习

    【更多参考】http://www.cnblogs.com/wupeiqi/articles/4963027.html

    【paramiko的Demo实例】https://github.com/paramiko/paramiko

    image_thumb[4]

    Paramiko模块学习:

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

    paramiko 遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接,可以实现远程文件的上传,下载或通过ssh远程执行命令

    简单讲:ssh使用C实现的远程连接,Paramiko是用Python实现的原创连接

    paramiko安装

    Linux下安装

    安装一:安装源安装

    sudo pip3 install paramiko
    或
    sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple paramiko

    image_thumb[5]

    安装二:源码安装

    # pycrypto,由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto
    # 下载安装 pycrypto
    wget http://files.cnblogs.com/files/wupeiqi/pycrypto-2.6.1.tar.gz
    tar -xvf pycrypto-2.6.1.tar.gz
    cd pycrypto-2.6.1
    python3 setup.py build
    python3 setup.py build
    python3 setup.py install
    sudo python3 setup.py install
    omc@omc-virtual-machine:~/Celery/pycrypto-2.6.1$ python3
    >>> import Crypto
    >>>

    image_thumb[6]

    # 下载安装 paramiko
    wget http://files.cnblogs.com/files/wupeiqi/paramiko-1.10.1.tar.gz
    tar -xvf paramiko-1.10.1.tar.gz
    cd paramiko-1.10.1
    sudo python3 setup.py build
    sudo python3 setup.py install  # 进入python环境,导入paramiko检查是否安装成功

    image_thumb[7]

    Win7下的安装:

    pip3 install paramiko

    image_thumb[8]

    记录一次Linux下安装事故:

    201800501安装Paramiko安装了一下午,心情特别长,很多的包有问题,第一次报错缺少

    问题现象: fatal error: openssl/opensslv.h: No such file or directory

    image_thumb[9]

    问题现象: Failed building wheel for cryptography

    image_thumb[10]

    问题现象: src/MD2.c:31:20: fatal error: Python.h: No such file or directory

    image_thumb[11]

    问题现象:warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath.

    image_thumb[12]

    问题最后的解决: 期间也安装了好多的应用包吧,但是都可以百度处理,不做赘述

    root@omc-virtual-machine:#  cd usr/local/lib/python3.5/dist-packages
    root@omc-virtual-machine:#  ll paramiko*

    image_thumb[13]

    root@omc-virtual-machine:#  mv paramiko-1.10.1-py3.5.egg paramiko-1.10.1-py3.5.egg.bal
    root@omc-virtual-machine:#  sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple paramiko

    image_thumb[14]

    安装好以后的目录结果:

    image_thumb[15]

    另: 心累,真的心累,不知道什么原因,安装了一下午,整个人很奔溃的样子,本来计划完成堡垒机的任务的,没想到出师不利,第一步的paramiko安装都有问题,关键是网上给的答案也是莫名其妙,找不到根本的解决方法。严重阻挡了51计划。最后还是试着才安装上去的,简直了...

    加油

    Paramilko的基本使用

    Paramilko的基本使用:

    1. 执行命令-通过用户名和密码连接服务器

    2. 执行命令 - 过密钥链接服务器

    3. 上传或者下载文件 - 通过用户名和密码

    4. 上传或下载文件 - 通过密钥

    执行命令-通过用户名和密码连接服务器

                 可用于多线程下,从IP列表中读取文件,传入IP参数进行多机器同时执行任务的效果

    #!/usr/bin/env python
    #coding:utf-8
    
    import paramiko
    
    ssh = paramiko.SSHClient()
    # 类似于ssh第一次连接主机的时候自动帮我们输入yes的功能
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())# paramiko帮我们自动创建主机配置
    ssh.connect('192.168.2.105', 22, 'omc', 'FTL666@HHH')
    stdin, stdout, stderr = ssh.exec_command('ifconfig')
    print(stdout.read().decode("utf-8"))  # 进行utf-8编码,否则输出的是byte字节形式的二级制格式
    ssh.close()

    image

    执行命令 - 过密钥链接服务器

    #!/usr/bin/env python
    #coding:utf-8
    import paramiko
    private_key_path = '/home/auto/.ssh/id_rsa'  # 秘钥的地址
    key = paramiko.RSAKey.from_private_key_file(private_key_path)
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect('主机名 ', '端口', '用户名', key)
    stdin, stdout, stderr = ssh.exec_command('df')
    print(stdout.read().decode("utf-8"))
    ssh.close()

    上传或者下载文件 - 通过用户名和密码

              原理就是利用ssh自带的sftp安全传输文件协议完成

    上传文件:
    #!/usr/bin/env python
    #coding:utf-8
    # 上传文件
    import os,sys
    import paramiko
    # t就是传输文件的一个实例
    t = paramiko.Transport(('192.168.2.105', 22))  # 这里利用transport进行文件传输
    t.connect(username='omc', password='FTL666@HHH')  # 用户名密码登录
    sftp = paramiko.SFTPClient.from_transport(t)  # 基于ssh创建一个sftp实例
    sftp.put('D://paramkilo实例.txt', '/tmp/test_OMC.py')
    t.close()

    image

    下载文件:
    # 下载文件
    #!/usr/bin/env python
    #coding:utf-8
    import os,sys
    import paramiko
    t = paramiko.Transport(('192.168.2.105', 22))  # 这里利用transport进行文件传输
    t.connect(username='omc', password='FTL666@HHH')  # 用户名密码登录
    sftp = paramiko.SFTPClient.from_transport(t)  # 基于ssh创建一个sftp实例
    sftp.get('/tmp/test_OMC.py', 'F://test_OMC.py')
    t.close()

    image

    上传或下载文件 - 通过密钥

          原理就是把ssh的密钥传递到服务器后免密登录使用

    上传文件 -通过密钥
    # 上传文件-通过密钥
    #!/usr/bin/env python
    #coding:utf-8
    import paramiko
    pravie_key_path = '/home/auto/.ssh/id_rsa'
    key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
    t = paramiko.Transport(('182.92.219.86',22))
    t.connect(username='omc', pkey="FTL666@HHH")
    sftp = paramiko.SFTPClient.from_transport(t)
    sftp.put('/tmp/test3.py','/tmp/test3.py') 
    t.close()
    下载文件 -通过密钥
    # 下载文件-通过密钥
    #!/usr/bin/env python
    #coding:utf-8
    import paramiko
    pravie_key_path = '/home/auto/.ssh/id_rsa'
    key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
    t = paramiko.Transport(('182.92.219.86',22))
    t.connect(username='omc', pkey="FTL666@HHH")
    sftp = paramiko.SFTPClient.from_transport(t)
    sftp.get('/tmp/test3.py','/tmp/test4.py') 
    t.close()
  • 相关阅读:
    webpack里CommonJS的require与ES6 的module.exports加载模块有何不同
    前端项目使用module.exports文件一定要Webpack编译吗?请问gulp可以编译这种文件吗
    Webpack之“多页面开发”最佳实战
    webpack 单页面应用实战
    也谈谈同源策略和跨域问题
    (转)Babel-现在开始使用 ES6
    webpack 配置简单说几句 ?
    Javascript 严格模式详解
    JavaScript6 新语法 let 有什么优势
    js中let和var定义变量的区别
  • 原文地址:https://www.cnblogs.com/ftl1012/p/paramiko.html
Copyright © 2011-2022 走看看