python paramiko 使用

发布时间:2019-09-23 17:00:03编辑:auto阅读(1555)

       python 下的paramiko功能很之强大。我们所熟悉的Ansible就是用paramiko编写。paramiko主要是通过ssh协议对远程主机的管理。比如:执行远程主机的CLI、上传和下载文件等。


    1.通过使用paramiko 远程管理主机

     

    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    #Author;David.Zhang
    #Function:Remote management server using paramiko
    import paramiko
    def parserHost():
        HOSTS=['192.168.1.1', '192.168.1.2', '192.168.1.3']
        PORT=22
        USERNAME='root'
        PASSWD='xxxxxx'
        ld=[]
        for HOST in HOSTS:
            try:
                ssh = paramiko.SSHClient()
                ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
                ssh.connect(hostname=HOST, username=USERNAME, password=PASSWD, port=PORT)
                stdin, stdout, stderr = ssh.exec_command('rpm -qa | grep nginx | md5sum')
                ssh.close()
            except:
                ld.append(HOST)
        return ld
    if __name__ == "__main__":
        print parserHost()
    #HOSTS   要处理的服务器列表
    #ld      当某台服务器处理异常,ld作为buffer存放处理异常的服务器,方便排查错误。


    2. 通过使用paramiko 上传和下载文件

    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    #Author:David.Zhang
    import paramiko
    def sftp():
        HOSTS=['192.168.1.1', '192.168.1.2']
        PORT=22
        USERNAME='root'
        PASSWD='xxxxx'
        ld=[]
        for HOST in HOSTS:
            try:
                ssh = paramiko.Transport((HOST,PORT))
                ssh.connect(username=USERNAME, password=PASSWD)
                sftp = paramiko.SFTPClient.from_transport(ssh)
                remotepath = '/root/file1'
                localpath = '/root/file1'
                sftp.put(localpath, remotepath)   #上传
                sftp.get(remotpath, localpath)    #下载
                sftp.close()
            except:
                ld.append(HOST)
    if __name__ == "__main__":
        print sftp()


关键字