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()
  • 相关阅读:
    POJ 2752 Seek the Name, Seek the Fame
    POJ 2406 Power Strings
    KMP 算法总结
    SGU 275 To xor or not to xor
    hihocoder 1196 高斯消元.二
    hihoCoder 1195 高斯消元.一
    UvaLive 5026 Building Roads
    HDU 2196 computer
    Notions of Flow Networks and Flows
    C/C++代码中的笔误
  • 原文地址:https://www.cnblogs.com/ftl1012/p/paramiko.html
Copyright © 2011-2022 走看看