CMDB项目要点总结

1.基于paramiko对远程主机执行命令操作

秘钥形式

private_key = paramiko.RSAKey.from_private_key_file('c:/Users/用户名/.ssh/id_rsa')# 创建ssh对象ssh = paramiko.SSHClient()# 运行连接不在know_host文件中的主机ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 连接服务器ssh.connect(hostname='主机名', port='端口号', username='用户名', pkey=private_key)# 执行命令stdin, stdout, stderr = ssh.exec_command("命令")# 获取结果result = stdout.read()# 关闭连接ssh.close()

2.线程池提高效率

from concurrent.futures import ThreadPoolExecutor# 创建一个十个线程的线程池def task(i):   print("我是任务%s" % i)pool = ThreadPoolExecutor(10)for i in range(10):   pool.submit(task,i)

3.基于logging模块进行日志的提取

import loggingimport traceback# import settingsclass Logger(object):    def __init__(self, file_path, level):        file_handler = logging.FileHandler(file_path, 'a', encoding='utf-8')        fmt = logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s: %(message)s")        file_handler.setFormatter(fmt)        self.logger = logging.Logger('cmdb', level=level)        self.logger.addHandler(file_handler)    def error(self, msg):        self.logger.error(msg)logger = Logger("你的日志存放路径", logging.DEBUG)logger.error(traceback.format_exc())  # 获取异常堆栈信息

4.基于类的封装对数据进行封装

class BaseResponse(object):    def __init__(self, status=True, data=None, error=None):        self.status = status        self.data = data        self.error = error        @property  # 作用:让调用着不用加()    def dict(self):        return self.__dict__

5.基于工厂模式和反射对资产数据进行获取

def get_server_info(ssh, hostname):server_info = {}for key, path in settings.PLUGIN_CLASS_DICT.items():module_path, class_name = path.rsplit('.', maxsplit=1)try:module = importlib.import_module(module_path)except Exception as e:print(e)cls = getattr(module, class_name)plugin_obj = cls()info = plugin_obj.process(ssh, hostname)server_info[key] = inforeturn server_info
# settings.py# 获取计算机信息配置PLUGIN_CLASS_DICT = {'basic': 'lib.plugin.basic.BasicPlugin','disk': 'lib.plugin.disk.DiskPlugin','memory': 'lib.plugin.memory.MemoryPlugin','network': 'lib.plugin.network.NetworkPlugin',}
# disk.pyimport tracebackfrom lib.utils.log import loggerfrom lib.utils.response import BaseResponseclass DiskPlugin(BasePlugin):"""获取磁盘信息"""def process(self, ssh, hostname):result = BaseResponse()try:# output = ssh(hostname, 'MegaCli -PDList -aALL')output = open('files/disk.out').read()result.data = outputoutput.close()except Exception as e:logger.error(traceback.format_exc())result.status = Falseresult.error = traceback.format_exc()return result.dict

来源:https://www.icode9.com/content-4-844301.html

(0)

相关推荐

  • 使paramiko库执行命令时,在给定的时间强制退出

    原因: 使用paramiko库ssh连接到远端云主机上时,非常偶现卡死现象,连接无法退出(可以是执行命令时云主机重启等造成).需要给定一段时间,不管命令执行是否卡住,都退出连接,显示命令执行超时错误. ...

  • Selenium2+python自动化72-logging日志使用

    前言 脚本运行的时候,有时候不知道用例的执行情况,这时候可以加入日志,这样出现问题后方便查阅,也容易排查哪些用例执行了,哪些没有执行. 一.封装logging模块 1.关于logging日志的介绍,我 ...

  • Django中使用Celery执行异步和定时任务的注意事项

    WEB前端开发社区 昨天 1. Windows中使用Celery 4.0及以后版本 Celery 4.0+及以后版本不支持在windows系统上运行.如果你希望在windows系统上使用celery, ...

  • 如何用 Python 在京东上抢口罩

    全国抗"疫"这么久终于见到曙光,在家待了将近一个月,现在终于可以去上班了,可是却发现出门必备的口罩却一直买不到.最近看到京东上每天都会有口罩的秒杀活动,试了几次却怎么也抢不到,到了 ...

  • 模型上线不用愁,批量推理来加油

    作为一个算法工程师,在日常工作中难免会碰到模型上线的问题.对于一些要求不高的场合,简单找一个web框架实现一下接口就能搞定:对于每个用户请求,调用模型得到结果再返回.但这种朴素的实现往往无法最大化利用 ...

  • 知识付费,互联网虚拟资源项目要点,为何适合新手小白

    大家好,我是七术,互联网副业项目操盘手,擅长各大ping台实战yin流,目前专注于互联网落地项目bian现. 从事互联网创业5年,在这段时间里,我看到和学习了无数的项目,并将无数项目的玩法和套路揭秘分 ...

  • 知名物业高清大图,让你清楚看懂物业服务示范项目要点

    秩 序 维 护 电子围栏 24H监控 道路路障 合理化的人车分流,降低业主人身安全的风险.智能化车辆识别系统及APP雷达开门,便捷出行,提高效率. 机动车和非机动车分开管理,维护车辆停放有序. 消 防 ...

  • 城市商业项目旧改更新建议要点

    一.我国商业地产发展现状和主要问题 (一)土地供应量大 改革开放四十年,我国的商业地产总量巨大,其中既有原有项目,更有不断新增的项目.根据中国购物中心产业咨询中心预测,到2025年中国的购物中心将超过 ...

  • 建设工程EPC项目经理负责制的执行要点

    建设工程EPC项目经理负责制的执行要点

  • 社区商业吸金魔方:做好项目规划设计的八大要点

    核心提示 随着城市化进程不断深入.交通网络日趋发达,在郊区地价相对低的情况下,"郊区大盘"社区商业成为众多企业大亨选择的热点区域.但是,郊区大盘的社区商业,往往存在几个问题:体量大 ...

  • 项目质量管理的10个要点

    项目质量管理要遵循质量管理体系,管理层在项目开始之前要制订项目质量管理计划和标准,并且在项目执行过程中要保证相关利害关系者都要知道本项目的质量管理标准.项目质量管理十点要则高度浓缩了项目质量管理体系的 ...

  • “我为夜狂!” ,说“夜经济”中的文旅项目运营要点

    白文导演说"我为夜狂!" --"夜经济"中的文旅发展趋势与运营要点 导演:白文   操盘手:大秦笔记 中原茶旅小镇欢迎您   "夜经济"是指 ...

  • 项目建议书的编写要点和主要内容

    一.项目建议书的编写要点: (1)项目建设地点是否合适,有无重复建设与不合理布局的现象: (2)项目的财务.经济效益评价是否合理. (3)项目是否符合国家的建设方针和长期规划,以及产业结构调整的方向和 ...

  • EPC装饰项目各阶段工作内容及管理要点,建议收藏!

    随着经济的发展和施工工艺技术水平的不断提高,业主的需求逐步增强, 对于建筑服务综合性和功能性的要求越来越高,这就迫切需要采用一种综合服务功能较好的承包模式,EPC模式就在这种情况下广泛的应用. 在我国 ...