审计系统---paramiko模块学习
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 https://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 https://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()
相关文章
- Unity性能优化 — 动画模块
- ds1302模块的一个arduino程序
- 大型服装集团BI决策系统的分析主题模块
- 【语音通信】语音通信系统包括语音硬件采样,抽样量化,PCM编码解码模块,FIR滤波,QPSK调制解调模块,语音增强模块以及语音信号还原
- python 模块 ntpath
- Python自动化运维--系统基础信息模块
- 如何单独编译Linux内核的某个模块?
- git如何添加子模块以便方便使用别人维护的模块?
- python3用http.server模块搭建简易版服务器
- 模块源代码文件时怎么样变成模块对象的?
- Windows系统中安装Python模块pip numpy matplotlib
- ABP理论学习之模块系统
- Qt编写安防视频监控系统61-子模块5设备控制
- Qt编写安防视频监控系统58-子模块2窗口信息
- 《Python自动化运维:技术与最佳实践》一第1章 系统基础信息模块详解
- javascript中的模块系统
- nodejs 用http模块搭建的服务器的路由,以及路由代码的重构过程
- 天津政府应急系统之GIS一张图(arcgis api for flex)讲解(六)地图搜索模块
- 天津政府应急系统之GIS一张图(arcgis api for flex)讲解(三)显示地图坐标系模块
- 51与JDY31蓝牙模块通讯,51驱动JDY31蓝牙APP点灯
- 基于GPS模块的公交车语音播报系统使用说明
- Node.js模块系统的实现机制简析
- 【Python】模块详解/如何安装模块的方法
- Python--turtle绘图模块讲解
- JS框架设计之加载器所在路径的探知一模块加载系统
- JS框架设计之模块加载系统
- nodejs模块——fs模块 WriteFile写入文件