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正则表达式修复网站文章字体不统一的解决方法
Feb 21 Python
初学python的操作难点总结(新手必看篇)
Aug 03 Python
python下10个简单实例代码
Nov 15 Python
python3爬取各类天气信息
Feb 24 Python
详解Python sys.argv使用方法
May 10 Python
对python3中的RE(正则表达式)-详细总结
Jul 23 Python
python实现图片压缩代码实例
Aug 12 Python
Pytorch卷积层手动初始化权值的实例
Aug 17 Python
Python创建空列表的字典2种方法详解
Feb 13 Python
python 爬虫如何正确的使用cookie
Oct 27 Python
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
May 28 Python
Python的代理类实现,控制访问和修改属性的权限你都了解吗
Mar 21 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 文件扩展名 获取函数
2009/06/03 PHP
vs中通过剪切板循环来循环粘贴不同内容
2011/04/30 PHP
PHP使用ODBC连接数据库的方法
2015/07/18 PHP
自制PHP框架之模型与数据库
2017/05/07 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
[原创]静态页面也可以实现预览 列表不同的显示方式
2006/10/14 Javascript
JavaScript 高级语法介绍
2009/06/15 Javascript
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
用JavaScript修改CSS属性的代码
2013/05/06 Javascript
js用闭包遍历树状数组的方法
2014/03/19 Javascript
Javascript中对象继承的实现小例
2014/05/12 Javascript
js计算任意值之间随机数的方法
2015/01/16 Javascript
微信JSSDK上传图片
2015/08/23 Javascript
详谈AngularJs 控制器、数据绑定、作用域
2017/07/09 Javascript
Vue2.0 vue-source jsonp 跨域请求
2017/08/04 Javascript
javascript对HTML字符转义与反转义
2018/12/13 Javascript
使用VUE+iView+.Net Core上传图片的方法示例
2019/01/04 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
2019/09/29 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
JavaScript 双向链表操作实例分析【创建、增加、查找、删除等】
2020/04/28 Javascript
JavaScript Window浏览器对象模型原理解析
2020/05/30 Javascript
详解vue3.0 的 Composition API 的一种使用方法
2020/10/26 Javascript
python操作excel让工作自动化
2019/08/09 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
2020/03/10 Python
浅析python 字典嵌套
2020/09/29 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
纯CSS3绘制打火机动画火焰效果
2016/07/18 HTML / CSS
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
团员个人的自我评价
2013/12/02 职场文书
殡葬服务心得体会
2014/09/11 职场文书
教师群众路线剖析材料
2014/09/29 职场文书
干部作风建设工作总结
2014/10/29 职场文书
会计出纳岗位职责
2015/03/31 职场文书
趣味运动会通讯稿
2015/07/18 职场文书
Python实现老照片修复之上色小技巧
2021/10/16 Python
《仙剑客栈2》第一弹正式宣传片公开 年内发售
2022/04/07 其他游戏