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 相关文章推荐
linux下安装easy_install的方法
Feb 10 Python
Python的Flask框架中实现简单的登录功能的教程
Apr 20 Python
利用信号如何监控Django模型对象字段值的变化详解
Nov 27 Python
使用Python搭建虚拟环境的配置方法
Feb 28 Python
Python定时任务sched模块用法示例
Jul 16 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
Oct 18 Python
Python之NumPy(axis=0 与axis=1)区分详解
May 27 Python
记录Python脚本的运行日志的方法
Jun 05 Python
Python字符串的一些操作方法总结
Jun 10 Python
Django权限设置及验证方式
May 13 Python
浅谈python处理json和redis hash的坑
Jul 16 Python
Python中BeautifulSoup通过查找Id获取元素信息
Dec 07 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中static静态变量的使用方法详解
2010/06/04 PHP
PHP 数据结构 算法 三元组 Triplet
2011/07/02 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
2018/05/23 PHP
Laravel实现ApiToken认证请求
2019/10/14 PHP
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
扩展JS Date对象时间格式化功能的小例子
2013/12/02 Javascript
JavaScript获取页面中超链接数量的方法
2015/11/09 Javascript
NodeJS 实现手机短信验证模块阿里大于功能
2017/06/19 NodeJs
微信小程序组件之srcoll-view的详解
2017/10/19 Javascript
JavaScript中的高级函数
2018/01/04 Javascript
详解vue.js移动端配置flexible.js及注意事项
2019/04/10 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
2019/06/14 Javascript
微信小程序实现多行文字超出部分省略号显示功能
2019/10/23 Javascript
VUEX-action可以修改state吗
2019/11/19 Javascript
element-ui如何防止重复提交的方法步骤
2019/12/09 Javascript
[56:12]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第一场 6.3
2018/06/04 DOTA
Python有序查找算法之二分法实例分析
2017/12/11 Python
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
Python实现识别手写数字 Python图片读入与处理
2020/03/23 Python
python学生信息管理系统(初级版)
2018/10/17 Python
Python设计模式之状态模式原理与用法详解
2019/01/15 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
Python读取csv文件实例解析
2019/12/30 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
2020/09/16 Python
Python应用自动化部署工具Fabric原理及使用解析
2020/11/30 Python
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
饿了么订餐官网:外卖、网上订餐
2019/06/28 全球购物
如果一个类实现了多个接口但是这些接口有相同的方法名将会怎样
2013/06/16 面试题
财务会计人员岗位职责
2013/11/30 职场文书
大学生评语大全
2014/04/18 职场文书
勤俭节约演讲稿
2014/05/08 职场文书
学校就业推荐信范文
2014/05/19 职场文书
城南旧事电影观后感
2015/06/16 职场文书
聊聊基于pytorch实现Resnet对本地数据集的训练问题
2022/03/25 Python
JavaScript圣杯布局与双飞翼布局实现案例详解
2022/08/05 Javascript