Windows系统下安装Python的SSH模块教程


Posted in Python onFebruary 05, 2015

Python中使用SSH需要用到OpenSSH,而OpenSSH依赖于paramiko模块,而paramiko模块又依赖于pycrypto模块,因此要在Python中使用SSH,则需要先安装模块顺序是:pycrypto -> ecdsa -> paramiko

1、安装pyCrypto

安装这个比较麻烦,需要本地编译,要装vs或gcc还有一堆配置,还不一定能编译成功。(网上能搜到安装步骤)
建议直接下载已编译版: http://www.voidspace.org.uk/python/modules.shtml#pycrypto
直接下载并安装既可。
(注:crypto有java和C++版)

2、安装ecdsa

看很多博客没有提到这个库,但我执行paramiko时,提示找不到ecdsa模块。
下载:https://pypi.python.org/pypi/ecdsa/0.9 ,解压到一个目录,目录中有一个setup.py。
安装比较简单,windows下直接在刚才解压后的目录执行:python setup.py install

3.安装paramiko

与安装ecdsa类型,只是打开下载页面很慢。。。

下载: https://github.com/paramiko/paramiko#,

安装步骤同ecdsa

注:1、所有另外安装的第三方库,如果不特指定安装后库目录的话,将默认保存到 %PYTHON_HOME%\Lib\site-packages下。

2、python大小写敏感,对模块名也是。

3、Crypto可以提供常见的加解密算法,如:RSA、RC4、DSA、DES

测试代码:

#!/usr/bin/python

# -*- coding:utf-8 -*-

# cp@chenpeng.info
import paramiko
def MAIN():
    host = “10.1.1.1″

    port = 22

    user = “root”

    pswd = “111222333″
    ssh = paramiko.SSHClient()

    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    ssh.connect(host, port, user, pswd)

    stdin, stdout, stderr = ssh.exec_command(‘ifconfig')

    print stdout.read()

    ssh.close()

#
if __name__=='__main__':

    try:

        MAIN()

    except Exception,e:

        print e

 
输出如下:

Windows系统下安装Python的SSH模块教程

目前主要用于批量执行多个服务器的ssh命令,批量维护比较方便。

下面是两种使用paramiko连接到linux服务器的代码

方式一:

ssh = paramiko.SSHClient() 

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 

ssh.connect("某IP地址",22,"用户名", "口令")

上面的第二行代码的作用是允许连接不在know_hosts文件中的主机

方式二:

t = paramiko.Transport(("主机","端口")) 

t.connect(username = "用户名", password = "口令")

如果连接远程主机需要提供密钥,上面第二行代码可改成:
t.connect(username = "用户名", password = "口令", hostkey="密钥")

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

下载linux服务器上的文件
#!/usr/bin/python   

import paramiko 

  

t = paramiko.Transport(("主机","端口")) 

t.connect(username = "用户名", password = "口令") 

sftp = paramiko.SFTPClient.from_transport(t) 

remotepath='/var/log/system.log' 

localpath='/tmp/system.log' 

sftp.get(remotepath, localpath) 

t.close()

上传文件到linux服务器
#!/usr/bin/python   

import paramiko 

 

t = paramiko.Transport(("主机","端口")) 

t.connect(username = "用户名", password = "口令") 

sftp = paramiko.SFTPClient.from_transport(t) 

remotepath='/var/log/system.log' 

localpath='/tmp/system.log' 

sftp.put(localpath,remotepath) 

t.close()
Python 相关文章推荐
python通过zlib实现压缩与解压字符串的方法
Nov 19 Python
基于wxpython开发的简单gui计算器实例
May 30 Python
在类Unix系统上开始Python3编程入门
Aug 20 Python
机器学习python实战之手写数字识别
Nov 01 Python
Python编写Windows Service服务程序
Jan 04 Python
Django Rest framework认证组件详细用法
Jul 25 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
Dec 19 Python
Python猴子补丁Monkey Patch用法实例解析
Mar 23 Python
Python selenium自动化测试模型图解
Apr 15 Python
简述python&pytorch 随机种子的实现
Oct 07 Python
基于python获取本地时间并转换时间戳和日期格式
Oct 27 Python
python实现web邮箱扫描的示例(附源码)
Mar 30 Python
Python 冒泡,选择,插入排序使用实例
Feb 05 #Python
Python中使用Flask、MongoDB搭建简易图片服务器
Feb 04 #Python
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
Feb 04 #Python
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
Feb 04 #Python
Python、Javascript中的闭包比较
Feb 04 #Python
线程和进程的区别及Python代码实例
Feb 04 #Python
Python中使用PIPE操作Linux管道
Feb 04 #Python
You might like
PHP JSON格式数据交互实例代码详解
2011/01/13 PHP
鼠标经过的文本框textbox变色
2009/05/21 Javascript
自己的js工具_Form 封装
2009/08/21 Javascript
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
url地址自动加#号问题说明
2010/08/21 Javascript
javascript 伪数组实现方法
2010/10/11 Javascript
IE6下focus与blur错乱的解决方案
2011/07/31 Javascript
js常用代码段整理
2011/11/30 Javascript
js判断字符长度以及中英文数字等
2013/12/31 Javascript
JavaScript中的ubound函数使用实例
2014/11/04 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
2016/03/07 Javascript
最佳的JavaScript错误处理实践
2016/07/16 Javascript
详解用webpack2.0构建vue2.0超详细精简版
2017/04/05 Javascript
详解Vue整合axios的实例代码
2017/06/21 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
vue.js 实现输入框动态添加功能
2018/06/25 Javascript
js canvas实现5张图片合成一张图片
2019/07/15 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
[02:58]魔廷新尊——痛苦女王至宝语音台词节选
2020/06/14 DOTA
Python编写登陆接口的方法
2017/07/10 Python
Python实用技巧之利用元组代替字典并为元组元素命名
2018/07/11 Python
利用python循环创建多个文件的方法
2018/10/25 Python
Python自定义一个类实现字典dict功能的方法
2019/01/19 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
Python pandas 列转行操作详解(类似hive中explode方法)
2020/05/18 Python
Python利用matplotlib绘制散点图的新手教程
2020/11/05 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
乌克兰珠宝大卖场:Zlato.ua
2020/09/27 全球购物
C#的几个面试问题
2016/05/22 面试题
《平行四边形的面积》教学反思
2016/02/16 职场文书
分享:关于学习的励志名言赏析
2019/08/16 职场文书
怎么用Python识别手势数字
2021/06/07 Python