zoukankan      html  css  js  c++  java
  • 使用python的Paramiko模块登陆SSH

    paramiko是用Python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。 
    python的paramiko模块可以方便的实现ssh登录,并执行命令。

    1. paramiko模块安装

    1.1安装pycrypto库

    下载地址请戳这里:http://download.csdn.net/detail/oatnehc/8825715

    pycrypto库的主页在这里:https://www.dlitz.net/software/pycrypto/

    pycrypto库安装方法

    python setup.py build && python setup.py install

    1.2安装paramiko

    paramiko下载地址:http://download.csdn.net/detail/oatnehc/8825743 
    paramiko库的主页在这里:https://pypi.python.org/pypi/paramiko 
    paramiko库的安装方法超级简单。

    python setup.py build && python setup.py install

    2.简单使用

    2.1 执行远程命令

        #!/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()

    2.2 上传文件到远程

        #!/usr/bin/python
        import paramiko
    
        t = paramiko.Transport(("某IP地址",22))
        t.connect(username = "用户名", password = "口令")
        sftp = paramiko.SFTPClient.from_transport(t)
        remotepath='/tmp/test.txt'
        localpath='/tmp/test.txt'
        sftp.put(localpath,remotepath)
        t.close()

    2.3 上传文件到远程

        #!/usr/bin/python
        import paramiko
    
        t = paramiko.Transport(("某IP地址",22))
        t.connect(username = "用户名", password = "口令")
        sftp = paramiko.SFTPClient.from_transport(t)
        remotepath='/tmp/test.txt'
        localpath='/tmp/test.txt'
        sftp.get(remotepath, localpath)
        t.close()

    3.高级用法

    通常需要对多个服务器或者虚拟机进行管理,可以采用批量的方式进行。

        #-*- coding: utf-8 -*-  
        #!/usr/bin/python   
        import paramiko  
        import threading  
        def ssh2(ip,username,passwd,cmd):  
            try:  
                ssh = paramiko.SSHClient()  
                ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  
                ssh.connect(ip,22,username,passwd,timeout=5)  
                for m in cmd:  
                    stdin, stdout, stderr = ssh.exec_command(m)  
                    out = stdout.readlines()  
                    for o in out:  
                        print o,  #屏幕输出
                print '%s	OK
    '%(ip)  
                ssh.close()  
            except :  
                print '%s	Error
    '%(ip)  
        if __name__=='__main__':  
            cmd = ['echo hello!']#需要执行的命令列表  
            username = "root"  #用户名  
            passwd = "root"    #密码  
            threads = []   #多线程  
            print "Begin excute......" 
            for i in range(1,254):  
                ip = '192.168.1.'+str(i)  
                a=threading.Thread(target=ssh2,args=(ip,username,passwd,cmd))   
                a.start() 

    参考 
    http://www.cnblogs.com/xia520pi/p/3805043.html 
    http://www.oschina.net/p/paramiko 
    http://developer.51cto.com/art/201206/340118.htm

  • 相关阅读:
    四则运算的改进
    小学四则运算
    基于控制台的小学四则运算
    软件工程实践项目课程的自我目标
    课程总结
    个人作业 软件案例分析
    第一次技术博客
    结对第二次作业
    软工2
    软件工程第一次作业
  • 原文地址:https://www.cnblogs.com/monsteryang/p/6638862.html
Copyright © 2011-2022 走看看