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

将插件文件继承基类

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

基类代码:

class BasePlugin:

    def get_os(self,handler,hostname):
os = handler.cmd("查询操作系统的命令",hostname)
# return os
return 'win32' def process(self,handler,hostname):
os = self.get_os(handler,hostname)
if os == 'win32': #测试判断执行win32
return 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 BasePlugin

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

class Memory(BasePlugin):
def win(self,handler,hostname):
'''
执行命令拿到结果-内存
:return:
'''
print("执行win方法")
ret = handler.cmd('wmic memphysical list brief',hostname)[0:10]
return ret
def 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 ret
def 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 ret
def linux(self,handler,hostname):
'''
执行命令拿到结果-网卡
:return:
'''
print("执行Linux方法")
ret = handler.cmd('ifconfig',hostname)[0:10]
return ret

最后测试执行结果

最新文章

  1. opencv嫁接vlfeat densesift
  2. mysql之路【第三篇】
  3. UniversalAndroidImageLoader出现异常:ImageLoader: Unable to resolve host "https": No address associated with host
  4. Lua函数之一
  5. php mssql 中文各种乱码
  6. codeigniter 分页类练习
  7. MapReduce源代码浅析
  8. input添加邮箱的时候自动显示后缀
  9. javascript中parseint和number的区别
  10. hdu 3032 Nim or not Nim? (sg函数打表找规律)
  11. Spring阅读方法
  12. CentOS 7.0 启动多个MySQL实例(mysql-5.7.21)
  13. 在vue中操作DOM--this.$nextTick()
  14. DataRow[]
  15. 理解Vue 2.5的Diff算法
  16. 条件随机场之CRF++源码详解-预测
  17. python 之socket
  18. 阿里云配置ssl证书
  19. linux backtrace()详细使用说明,分析Segmentation fault【转】
  20. 排序算法——Shell排序

热门文章

  1. 了解Linux的基础知识和一般概念
  2. 【Git 二】Windows|Mac 安装 Git
  3. 常用模块re模块(正则表达式)
  4. [洛谷P2045]方格取数加强版
  5. 13 hbase源码系列(十三)缓存机制MemStore与Block Cache
  6. 荣耀A55高调上市仅仅为孤独求败?
  7. spring mvc获取路径参数的几种方式
  8. 在C# 获取当前应用网址
  9. 手把手教你安装Navicat——靠谱的Navicat安装教程
  10. CCF模拟 I’m stuck!