Windows系统下安装Python的SSH模块教程
admin
2023-07-31 02:19:07
0

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

 
输出如下:

目前主要用于批量执行多个服务器的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()

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
项目管理和工程管理的区别 项目管理 项目管理,顾名思义就是专注于开发和完成项目的管理,以实现目标并满足成功标准和项目要求。 工...