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爬虫爬验证码实现功能详解
Apr 14 Python
Python编程之黑板上排列组合,你舍得解开吗
Oct 30 Python
Python 编程速成(推荐)
Apr 15 Python
Pyqt QImage 与 np array 转换方法
Jun 27 Python
Django对数据库进行添加与更新的例子
Jul 12 Python
Python实现Selenium自动化Page模式
Jul 14 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
Oct 23 Python
对python中各个response的使用说明
Mar 28 Python
使用Keras实现简单线性回归模型操作
Jun 12 Python
python中np是做什么的
Jul 21 Python
Python 在函数上添加包装器
Jul 28 Python
Python使用socket_TCP实现小文件下载功能
Oct 09 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
ftp类(example.php)
2006/10/09 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
2014/07/25 PHP
php中file_get_contents与curl性能比较分析
2014/11/08 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
Zend Framework教程之Zend_Db_Table用法详解
2016/03/21 PHP
获取JavaScript用户自定义类的类名称的代码
2007/03/08 Javascript
JavaScript的parseInt 取整使用
2011/05/09 Javascript
JQuery扩展插件Validate—6 radio、checkbox、select的验证
2011/09/05 Javascript
编写简单的jQuery提示插件
2014/12/21 Javascript
基于jQuery滑动杆实现购买日期选择效果
2015/09/15 Javascript
理解JS事件循环
2016/01/07 Javascript
JavaScript实现瀑布流布局
2020/06/28 Javascript
原生js制作日历控件实例分享
2016/04/06 Javascript
Vue.js系列之项目搭建(1)
2017/01/03 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
微信小程序多音频播放进度条问题
2018/08/28 Javascript
微信小程序使用npm支持踩坑
2018/11/07 Javascript
Vue.js递归组件实现组织架构树和选人功能
2019/07/04 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
[03:18]【TI9纪实】社区大触GL与木木
2019/08/25 DOTA
itchat接口使用示例
2017/10/23 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
2018/06/11 Python
Django 中自定义 Admin 样式与功能的实现方法
2019/07/04 Python
python 含子图的gif生成时内存溢出的方法
2019/07/07 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
Python 如何优雅的将数字转化为时间格式的方法
2019/09/26 Python
Otticanet意大利:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
Carolina工作鞋官网:Carolina Footwear
2019/03/14 全球购物
德国排名第一的主题公园门票网站:Attraction Tickets Direct
2019/09/09 全球购物
十一个高级MySql面试题
2014/10/06 面试题
18岁生日感言
2014/01/12 职场文书
公司业务员岗位职责
2014/03/18 职场文书
本科毕业生自荐信
2014/06/02 职场文书
上班迟到检讨书范文
2015/05/06 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers
SpringBoot中使用Redis作为全局锁示例过程
2022/03/24 Java/Android