您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

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

2024/4/23 18:59:37发布24次查看
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()
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product