使用paramiko和logging模块实现远程执行命令的小demo

时间长不写Python了,练练手

paramiko和logging模块基本用法和这个差不多

#!/usr/bin/python
#coding=UTF-8

import paramiko
import logging
import re

#使用logging库
logger = logging.getLogger(__name__)
logger.setLevel(level=logging.INFO)
formatter = logging.Formatter('%(asctime)s--%(levelname)s--%(message)s')

#将日志写入文件
handler = logging.FileHandler('log.txt')
handler.setLevel(level=logging.INFO)
handler.setFormatter(formatter)
logger.addHandler(handler)

#将日志输出到窗口
console = logging.StreamHandler()
console.setLevel(level=logging.INFO)
console.setFormatter(formatter)
logger.addHandler(console)

#使用paramiko库建立ssh连接
class test_paramiko(object):
    #初始化连接
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    #使用装饰器可以直接调用该函数,不用实例化
    @classmethod
    def exec_cmd(cls,cmd):
        stdin,stdout,stderr = test_paramiko.ssh.exec_command(cmd)
        result = stdout.read()
        return result

def connect(Username,passwd,IP):
    try:
        test_paramiko.ssh.connect(username=Username,password=passwd,hostname=IP)

    except paramiko.AuthenticationException:
        print 'connect failed'
        return False

    except paramiko.SSHException:
        print 'connect failed'
        return False

def dis_connect():
    test_paramiko.ssh.close()

if __name__ == '__main__':
    #打印日志
    logger.info('start test!')
    #连接到虚拟机,并执行ls命令,可以替换命令
    connect(Username='root',passwd='password',IP='192.168.96.225')
    res = test_paramiko.exec_cmd('ls')
    if re.search('test',res):
        print res
    dis_connect()
posted @ 2019-05-10 09:22  渣滓  阅读(206)  评论(0编辑  收藏  举报