paramiko模块学习

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

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

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

安装二:源码安装

# 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
>>>

# 下载安装 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检查是否安装成功

Win7下的安装:

pip3 install paramiko

记录一次Linux下安装事故:

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

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

问题现象: Failed building wheel for cryptography

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

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

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

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

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

安装好以后的目录结果:

另: 心累,真的心累,不知道什么原因,安装了一下午,整个人很奔溃的样子,本来计划完成堡垒机的任务的,没想到出师不利,第一步的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()

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

#!/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()

下载文件:
# 下载文件
#!/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()

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

原理就是把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()

审计系统---paramiko模块学习的更多相关文章

  1. python paramiko模块学习分享

    python paramiko模块学习分享 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.paramiko支持Linux, Sola ...

  2. paramiko模块学习笔记

    SSHClient 基于用户名密码连接 import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ss ...

  3. python3 Paramiko模块学习

    简介 ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography). 有了Paramiko以后,我们就可以在Py ...

  4. Paramiko模块学习

    #!/usr/bin/env python # Author:Zhangmingda import paramiko '''创建ssh对象''' ssh = paramiko.SSHClient() ...

  5. python 学习分享-paramiko模块

    paramiko模块学习分享 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.paramiko支持Linux, Solaris, BS ...

  6. 审计系统---初识堡垒机180501【all】

    堡垒机背景[审计系统] SRE是指Site Reliability Engineer (/运维工程师=运行维护 业务系统) 运维: 维护系统,维护业务,跟业务去走 防火墙: 禁止不必要的访问[直接访问 ...

  7. 审计系统---堡垒机python下ssh的使用

    堡垒机python下ssh的使用 [堡垒机更多参考]http://www.cnblogs.com/alex3714/articles/5286889.html [paramiko的Demo实例]htt ...

  8. 利用paramiko模块实现堡垒机+审计功能

    paramiko模块是一个远程连接服务器,全真模拟ssh2协议的python模块,借助paramiko源码包中的demos目录下:demo.py和interactive.py两个模块实现简单的堡垒机+ ...

  9. Python3学习之路~9.1 paramiko模块:实现ssh执行命令以及传输文件

    我们一般使用linux的时候,都是在Windows上安装一个ssh客户端连接上去.那么从一台linux如何连接到另一条linux呢?使用ssh命令即可,因为每台linux机器自己都有一个ssh客户端. ...

随机推荐

  1. oracle存储过程删除树状结构的表数据

    今天在删除一个车辆品牌表的时候,遇到了一个问题,是在java的代码中做逻辑删除还是直接在Oracle中一次删除完成呢 思来想去觉得还是在sql里直接删除比较合适, 为什么呢? 第一,涉及数据库的读写操 ...

  2. 【转】Visio绘制WEB流程图的心得

    一个哥们在MSN上告诉我,他们公司的交互设计师只产出流程图,并问我用什么标准评价流程图的好坏.他的说法把我彻底震了-这分工也太细了吧!也不知道该说他们那里这样是好还是不好. 不过仔细想来,我倒的确没有 ...

  3. c#基础学习(0709)之vs通过抽象方法实现多态

    抽象类不能用来实例化对象 1.抽象类中可以有实例成员,也可以有抽象成员 2.抽象成员不能有任何实现 3.抽象类.抽象成员必须包含在抽象类中 4.抽象类不能用来实例化对象,既然抽象类不能被实例化,那么抽 ...

  4. jQuery源码分析-03构造jQuery对象-源码结构和核心函数

    3. 构造jQuery对象 3.1源码结构 先看看总体结构,再做分解: (function( window, undefined ) { var jQuery = (function() { // 构 ...

  5. 一分钟配置jdk

    一.下载jdk 直接进入网站:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ...

  6. Mybatis源代码分析之parsing包

    parsing,从字面上理解就是编译解析的意思,那么这个包中的内容就应该和mybatis配置文件的编译解析有关系.本文首先会按照引用层次来分别介绍这个包中各个类的作用,而后再用实际的例子解释它们是如何 ...

  7. Spring MVC入门(一)—— SpringMVC的执行流程与常用注解

    一.什么是SpringMVC SpringMVC就是类似于Struts2的mvc框架,属于SpringFrameWork的后续产品.在模型层中与视图层的交互部分. springMVC执行流程: 二.常 ...

  8. python学习之老男孩python全栈第九期_第二周学习总结

    迭代器 双下方法:很少直接调用的方法,一般情况下,是通过其他语法触发的 1. 可迭代的 --> 可迭代协议:含有__iter__的方法( '__iter__' in dir(数据) ) 可迭代的 ...

  9. WCF服务使用(IIS+Http)和(Winform宿主+Tcp)两种方式进行发布

    1.写在前面 刚接触WCF不久,有很多地方知其然不知其所以然.当我在[创建服务->发布服务->使用服务]这一过程出现过许多问题.如客户端找不到服务引用:客户端只在本机环境中才能访问服务,移 ...

  10. c#如何禁用win7的任务管理器

    以前制作的桌面锁屏软件虽然也禁用过任务管理器,但是采取的是比较笨的方法,而且对操作系统还有一定的危害.因为任务管理也是一个窗体也就是说它中也是一个独立进程,所以只需要强制性关闭这个进程即可以关闭任务管 ...