• python中paramiko的安装


    windows下安装并使用Python的SSH模块(paramiko+pycrypto+ecdsa)

    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%Libsite-packages下。

    2、python大小写敏感,对模块名也是。

    3、Crypto可以提供常见的加解密算法,如:RSA、RC4、DSA、DES

    测试例子:

    1. # _*_ coding:UTF-8 _*_   
    2.   
    3. def t5():  
    4.     '''''Crypto MD5'''  
    5.     from Crypto.Hash import MD5  
    6.     h = MD5.new()  
    7.     h.update(b'Hello')  
    8.     print h.hexdigest()  
    9.   
    10. def t6():  
    11.     import paramiko  
    12.   
    13.     hostname = '192.168.9.57'  
    14.     port = 22  
    15.     user = 'root'  
    16.     passwd = '123456'  
    17.   
    18.     paramiko.util.log_to_file('paramiko.log')  
    19.     s = paramiko.SSHClient()  
    20.     s.set_missing_host_key_policy(paramiko.AutoAddPolicy())  
    21.     s.connect(hostname=hostname,port=port,username=user, password=passwd)  
    22.     #stdin,stdout,stderr=s.exec_command('pwd')   
    23.     stdin,stdout,stderr=s.exec_command('cat /etc/passwd | grep root:x:0:0:root', timeout=5)  
    24.     #print stdout.read()   
    25.     lines = stdout.readlines()  
    26.     for i in lines:  
    27.         print splitline(i)  
    28.         #print i,   
    29.     s.close()  
    30.   
    31. def splitline(line='', ch=':'):  
    32.     tmp = line[0:len(line)-1]  
    33.     ss = tmp.split(ch)  
    34.     ret = ''  
    35.     for i in ss:  
    36.         ret += i  
    37.         ret += ' '  
    38.         #print i + '===',   
    39.     return ret  
    40.   
    41. if __name__ == "__main__":  
    42.     #t7()   
    43.     t6()  
    44.     #t5()  
    # _*_ coding:UTF-8 _*_
    
    def t5():
        '''Crypto MD5'''
        from Crypto.Hash import MD5
        h = MD5.new()
        h.update(b'Hello')
        print h.hexdigest()
    
    def t6():
        import paramiko
    
        hostname = '192.168.9.57'
        port = 22
        user = 'root'
        passwd = '123456'
    
        paramiko.util.log_to_file('paramiko.log')
        s = paramiko.SSHClient()
        s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        s.connect(hostname=hostname,port=port,username=user, password=passwd)
        #stdin,stdout,stderr=s.exec_command('pwd')
        stdin,stdout,stderr=s.exec_command('cat /etc/passwd | grep root:x:0:0:root', timeout=5)
        #print stdout.read()
        lines = stdout.readlines()
        for i in lines:
            print splitline(i)
            #print i,
        s.close()
    
    def splitline(line='', ch=':'):
        tmp = line[0:len(line)-1]
        ss = tmp.split(ch)
        ret = ''
        for i in ss:
            ret += i
            ret += ' '
            #print i + '===',
        return ret
    
    if __name__ == "__main__":
        #t7()
        t6()
        #t5()


    参考文章:

    http://blog.chinaunix.net/uid-24917554-id-3476396.html

    http://lili-xiang.iteye.com/blog/1796640

    api: 

    https://www.dlitz.net/software/pycrypto/api/current/     https://www.dlitz.net/software/pycrypto/doc/

    http://docs.paramiko.org/

  • 相关阅读:
    MVC常用跳转页面的方法
    简单工厂模式
    MySQL 查询昨天中午12点到今天中午12点的数据
    Windows安装yarn
    MapStruct
    CSS 3D
    05-序列化器ModelSerializer
    django基础之Django中间件
    04-序列化器Serializer
    03-四大基本模块
  • 原文地址:https://www.cnblogs.com/shijiaoyun/p/4447901.html
Copyright © 2020-2023  润新知