歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

使用Python的Paramiko模塊登陸SSH

paramiko是用Python語言寫的一個模塊,遵循SSH2協議,支持以加密和認證的方式,進行遠程服務器的連接。
python的paramiko模塊可以方便的實現ssh登錄,並執行命令。

pycrypto 與 paramiko下載到Linux公社資源站下載:

------------------------------------------分割線------------------------------------------

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2017年資料/1月/26日/使用Python的Paramiko模塊登陸SSH/

下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm

------------------------------------------分割線------------------------------------------

1. paramiko模塊安裝

1.1安裝pycrypto庫

pycrypto庫的主頁在這裡:https://www.dlitz.net/software/pycrypto/

pycrypto庫安裝方法

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

1.2安裝paramiko

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\tOK\n'%(ip)  
            ssh.close()  
        except :  
            print '%s\tError\n'%(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() 

零基礎如何入門Python http://www.linuxidc.com/Linux/2016-10/136485.htm

Ubuntu 14.04安裝Python 3.3.5  http://www.linuxidc.com/Linux/2014-05/101481.htm

CentOS上源碼安裝Python3.4  http://www.linuxidc.com/Linux/2015-01/111870.htm

Ubuntu 14.04下Python數據處理環境搭建  http://www.linuxidc.com/Linux/2017-01/139568.htm

《Python核心編程 第二版》.(Wesley J. Chun ).[高清PDF中文版] http://www.linuxidc.com/Linux/2013-06/85425.htm

《Python開發技術詳解》.( 周偉,宗傑).[高清PDF掃描版+隨書視頻+代碼] http://www.linuxidc.com/Linux/2013-11/92693.htm

在CentOS 6.5上安裝Python2.7  http://www.linuxidc.com/Linux/2016-10/136206.htm

在Ubuntu下用Python搭建桌面算法交易研究環境 http://www.linuxidc.com/Linux/2013-11/92534.htm

 

Copyright © Linux教程網 All Rights Reserved