Python Paramiko模块的安装与使用详解


Posted in Python onNovember 18, 2016

一、前言

常见的解决方法都会需要对远程服务器必要的配置,如果远程服务器只有一两台还好说,如果有N台,还需要逐台进行配置,或者需要使用代码进行以上操作时,上面的办法就不太方便了。而使用paramiko可以很好的解决以上问题,比起前面的方法,它仅需要在本地上安装相应的软件(python以及PyCrypto),对远程服务器没有配置要求,对于连接多台服务器,进行复杂的连接操作特别有帮助。下面本文就来详细的介绍Python Paramiko模块的安装与使用,一起学习学习吧。、

二、安装

安装paramiko有两个先决条件,python和另外一个名为PyCrypto的模块。

通常安装标准的python模块,只需要在模块的根目录下运行:

python setup.py build
python setup.py install

备注:安装前先检查是否安装gcc(yum -y install gcc)

2.1 PyCrypto安装

wget http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.6.tar.gz
tar -zxvf pycrypto-2.6.tar.gz
cd pycrypto-2.6/
python setup.py build && python setup.py install

测试:

python>> import Crypto

(编译时报错:error: command 'gcc' failed with exit status 1;这是因为缺少python-dev的软件包,所yum -y install python-devel)

2.2 paramiko安装

wget http://www.lag.net/paramiko/download/paramiko-1.7.7.1.tar.gz
tar xvzf paramiko-1.7.7.1.tar.gz
cd paramiko-1.7.7.1/
python setup.py build && python setup.py install
Crypto error: 'module' object has no attribute 'HAVE_DECL_MPZ_POWM_SEC'

测试:

python>> import paramiko
(Crypto error: 'module' object has no attribute 'HAVE_DECL_MPZ_POWM_SEC'

找到 /usr/lib/python2.7/site-packages/Crypto/Util/number.py

if _fastmath is not None and not _fastmath.HAVE_DECL_MPZ_POWM_SEC:

注释了

#if _fastmath is not None and not _fastmath.HAVE_DECL_MPZ_POWM_SEC:

三、使用

3.1 执行远程命令

#!/usr/bin/python
import paramiko
 
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("某IP地址",22,"用户名", "口令")
stdin, stdout, stderr = ssh.exec_command("你的命令")
print stdout.readlines()
ssh.close()

3.2 上传文件到远程

#!/usr/bin/python
import paramiko
 
t = paramiko.Transport(("某IP地址",22))
t.connect(username = "用户名", password = "口令")
sftp = paramiko.SFTPClient.from_transport(t)
remotepath='/tmp/test.txt'
localpath='/tmp/test.txt'
sftp.put(localpath,remotepath)
t.close()

3.3 从远程下载文件

#!/usr/bin/python
import paramiko
 
t = paramiko.Transport(("某IP地址",22))
t.connect(username = "用户名", password = "口令")
sftp = paramiko.SFTPClient.from_transport(t)
remotepath='/tmp/test.txt'
localpath='/tmp/test.txt'
sftp.get(remotepath, localpath)
t.close()

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Python 相关文章推荐
Python常见文件操作的函数示例代码
Nov 15 Python
python查看微信好友是否删除自己
Dec 19 Python
python 表达式和语句及for、while循环练习实例
Jul 07 Python
python之matplotlib学习绘制动态更新图实例代码
Jan 23 Python
纯用NumPy实现神经网络的示例代码
Oct 24 Python
用python标准库difflib比较两份文件的异同详解
Nov 16 Python
Django model update的多种用法介绍
Mar 28 Python
jupyter note 实现将数据保存为word
Apr 14 Python
Python基于smtplib模块发送邮件代码实例
May 29 Python
python 生成器需注意的小问题
Sep 29 Python
python中@contextmanager实例用法
Feb 07 Python
Python合并多张图片成PDF
Jun 09 Python
Python数据分析之真实IP请求Pandas详解
Nov 18 #Python
Python切换pip安装源的方法详解
Nov 18 #Python
Python max内置函数详细介绍
Nov 17 #Python
Python中的日期时间处理详解
Nov 17 #Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
Nov 16 #Python
Python进阶篇之字典操作总结
Nov 16 #Python
Python极简代码实现杨辉三角示例代码
Nov 15 #Python
You might like
JS控制文本框textarea输入字数限制的方法
2013/06/17 Javascript
jQuery鼠标事件汇总
2015/08/30 Javascript
分享jQuery插件的学习笔记
2016/01/14 Javascript
JavaScript简单获取系统当前时间完整示例
2016/08/02 Javascript
jquery中用jsonp实现搜索框功能
2016/10/18 Javascript
Angular中ng-bind和ng-model的区别实例详解
2017/04/10 Javascript
详解使用路由延迟加载 Angular 模块
2017/10/12 Javascript
vue移动端UI框架实现QQ侧边菜单组件
2018/03/09 Javascript
详解JS函数stack size计算方法
2018/06/18 Javascript
layui 给数据表格加序号的方法
2018/08/20 Javascript
5分钟快速掌握JS中var、let和const的异同
2018/09/19 Javascript
Vue表单输入绑定的示例代码
2018/11/01 Javascript
vue拖拽排序插件vuedraggable使用方法详解
2020/08/21 Javascript
Vue对象赋值视图不更新问题及解决方法
2019/06/03 Javascript
JS运算符简单用法示例
2020/01/19 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
解决nuxt 自定义全局方法,全局属性,全局变量的问题
2020/11/05 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
2020/11/06 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
Python学习笔记(二)基础语法
2014/06/06 Python
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
Python中对象的引用与复制代码示例
2017/12/04 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
python批量赋值操作实例
2018/10/22 Python
django drf框架中的user验证以及JWT拓展的介绍
2019/08/12 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
2020/01/05 Python
解决Python发送Http请求时,中文乱码的问题
2020/04/30 Python
python中time tzset()函数实例用法
2021/02/18 Python
波兰快递服务:Globkurier.pl
2019/11/08 全球购物
Java面试题:请问一下代码输出是什么
2015/05/27 面试题
就业推荐自我鉴定
2013/10/06 职场文书
个人政治思想总结
2015/03/05 职场文书
婚礼答谢词范文
2015/09/29 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
分布式锁为什么要选择Zookeeper而不是Redis?看完这篇你就明白了
2021/05/21 Redis
详解Python中__new__方法的作用
2022/03/31 Python