判断系统因为是公用的方法,所有要写基类方法使用,首先在插件中创建一个基类

将插件文件继承基类

思路是创建基类使用handler.cmd ,命令去获取系统信息,然后进行判断,然后去执行 磁盘 ,cpu,网卡,内存等信息的收集;

基类代码:

class BasePlugin:def get_os(self,handler,hostname):os = handler.cmd("查询操作系统的命令",hostname)# return osreturn 'win32'def process(self,handler,hostname):os = self.get_os(handler,hostname)if os == 'win32': #测试判断执行win32return self.win(handler,hostname)else:return self.linux(handler,hostname)def win(self,handler,hostname):#约束派生类必须实现win方法raise NotImplementedError('handler() must Implemented.')def linux(self,handler,hostname):#约束派生类必须实现Linux方法raise NotImplementedError('handler() must Implemented.')

disk.py ,cpu.py,memory.py,network.py 代码;

from .base import BasePluginclass Disk(BasePlugin):def win(self,handler,hostname):'''执行命令拿到结果磁盘:return:'''print("执行win方法")ret = handler.cmd('wmic diskdrive',hostname)[0:10]return retdef linux(self,handler,hostname):'''执行命令拿到结果磁盘:return:'''print("执行Linux方法")ret = handler.cmd('df -h',hostname)[0:10]return ret

from .base import BasePluginclass Memory(BasePlugin):def win(self,handler,hostname):'''执行命令拿到结果-内存:return:'''print("执行win方法")ret = handler.cmd('wmic memphysical list brief',hostname)[0:10]return retdef linux(self,handler,hostname):'''执行命令拿到结果-内存:return:'''print("执行Linux方法")ret = handler.cmd('free',hostname)[0:10]return ret

from .base import BasePlugin
class CPU(BasePlugin):def win(self,handler,hostname):'''执行命令拿到结果-cpu:return:'''print("执行win方法")ret = handler.cmd('wmic cpu',hostname)[0:10]return retdef linux(self,handler,hostname):'''执行命令拿到结果-cpu:return:'''print("执行Linux方法")ret = handler.cmd('wmic cpu',hostname)[0:10]return ret

from .base import BasePlugin
class Network(BasePlugin):def win(self,handler,hostname):'''执行命令拿到结果-网卡:return:'''print("执行win方法")ret = handler.cmd('ipconfig',hostname)[0:10]return retdef linux(self,handler,hostname):'''执行命令拿到结果-网卡:return:'''print("执行Linux方法")ret = handler.cmd('ifconfig',hostname)[0:10]return ret

最后测试执行结果

转载于:https://www.cnblogs.com/michael2018/p/10419637.html

CMDB学习之三数据采集相关推荐

  1. Linux学习之三-Linux系统的一些重要配置文件

    Linux学习之三-Linux系统的一些重要配置文件 1.网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 说明: DEVICE=eth0        ...

  2. matlab矩阵运算_MATLAB基础学习之三种基本运算

    MATLAB学习之三种运算 MATLAB软件 一.基本算数运算 在MATLAB中有两种矩阵运算:右除/和左除.如果A矩阵是非奇异方阵,则B/A等效于B*inv(A),AB等效于inv(A)*B.注:i ...

  3. linux内核学习之三:linux中的32位与64位

    linux内核学习之三:linux中的"32位"与"64位" 在通用PC领域,不论是windows还是linux界,我们都会经常听到"32位" ...

  4. 智能会议系统(32)---WebRTC学习之三:录音和播放

    WebRTC学习之三:录音和播放 VoiceEngine中与录音和播放相关的头文件有五个,如下表所示: 头文件 包含的类 说明 voe_base.h VoiceEngineObserver Voice ...

  5. 华为鸿蒙系统HarmonyOS学习之三:鸿蒙HarmonyOS 系统安全性

    华为鸿蒙系统HarmonyOS学习之三:HarmonyOS 系统安全性 HarmonyOS(鸿蒙操作系统)采用全新的微内核设计,具有增强的安全性和低延迟.该微内核旨在简化内核功能,在内核外的用户模式下 ...

  6. 三年程序学习之三:(失业了)

    老板的同学从广州过来的,然后不会写代码.曾经是学计算机硬件的.他过来主要是抓公司业务,公司想走正轨,想做站点建设外包工作.话说这人27和老板一样的年龄,当时就数落了他,为什么多年后你就成为了他的员工. ...

  7. 动态规划学习之三种方法解决斐波拉契数

    斐波拉契数是一个很经典的问题,也会很多公司面试的考题,每个学习计算机的同学都会接触这个问题,尤其是在学习递归的时候,利用递归来解决斐波拉契数是很多教材采用的一个例子,所以很多同学一想到斐波拉契马上就会 ...

  8. 强化学习之三:双臂赌博机(Two-armed Bandit)

    本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译,该翻译是基于个人分享知识的目的进行的,欢迎交流!(This article is my personal t ...

  9. 深度学习之三:深度学习基本思想

     目录: 一.概述 二.背景 三.人脑视觉机理 四.关于特征 4.1.特征表示的粒度 4.2.初级(浅层)特征表示 4.3.结构性特征表示 4.4.需要有多少个特征? 五.Deep Learnin ...

最新文章

  1. android ndk mac安装成功,Mac下Android Studio NDK 环境搭建并运行
  2. Java 性能优化之 String 篇
  3. CSS实现div悬浮框的代码(兼容IE6)
  4. 实现两个pawn的切换
  5. java 负数 位移运算_Java中的位移运算
  6. 如何用一套引擎搞定机器学习全流程?
  7. nginx动静分离配置_Nginx动静分离配置实例
  8. marathon新建应用映射端口限制
  9. IOMMU 虚拟IO地址和物理地址相关联
  10. Altium Designer,打开PCB文件,提示:File type not recognised
  11. Android app修改IMEI号
  12. 态势感知平台分析流程
  13. mysql教学磁力链_价值1000元的磁力链搜索源码PHP+python+mysql 一键搭建
  14. win7计算机屏保后声音丢失,告诉你win7屏保怎么设置
  15. linux下动态域名的实践
  16. Jmeter(五)bayboy录制时弹窗“当前页面的脚本发生错误”解决办法
  17. HDU 2209 翻纸牌游戏 By Assassin 模拟
  18. 【搬运】黑苹果台式机机型选择指导 By 黑果小兵
  19. 魅族手机没有插耳机却显示耳机模式解决方案
  20. CST(Crypto Systems Toolkit) 7.1学习笔记-chapter6

热门文章

  1. 关于压缩工具 7z(7-zip) 的选项 -x(排除文件)的解读
  2. xampp mysql 查询很慢_如何开启mysql的慢查询机制
  3. linux安java,Linux安装Java
  4. 嵩天python笔记_嵩天Python学习笔记-05
  5. 数组做参数_C语言进阶之路:函数—数组参数!
  6. linux数组操作 增删改查,linuxea:go数组与数组增删改查(19)
  7. java post webservice_[java.webservice] 如何通过HttpPost从服务器上获得一个sessionid
  8. mysql ignore 1 lines_MYSQL使用笔记(1)
  9. 遮掩java_css之图片下方定位遮掩层
  10. 关于交换机的VLAN技术你了解多少?