基于python的pc终端信息采集解决方案
目标需求概述:能够采集终端电脑的ip/mac/计算机名/补丁等基础信息,按需实现指定软件版本的查询,如:防病毒软件版本、FoxMail软件版本采集。
总体设计概述:基于C/S架构实现整个系统的搭建,基于python实现客户端的开发,基于java SSM实现后台服务端的搭建。客户端和服务端之间能够通讯,能够实现数据的交互。
编码实施过程中的困难点:部分信息采集需借助windows的bat程序实现,如获取补丁信息,需要通过systeminfo实现,需要解决python和bat程序之间的调用问题。
程序结构:
说明:
根据代码功能的定位尽量做代码分层,便于后期的维护。
"""
PcInfoCheck-v1.0.0.py :程序入口
PcInfoClass.py :pc终端信息类
CallServer.py : 用于与服务端进行数据交互
CheckInfo.py : 业务逻辑处理,获取pc各种信息
CheckPatchUtil.py : 主要是校验本地已安装的补丁是否和服务器上的不列表是否一致工具类
LoggerUtil.py : 记录主要的日志的信息工具类
PcInfoUtil.py : 获取操作系统的各种信息工具类
SystemCodeUtil.py : 获取配置文件信息工具类
CheckView.py : 终端界面
"""
#通过windows批处理脚本实现读取注册表信息
def checkVisusVersion():
realVersion = versionDict['antivirusVersion']
flg = 0
strVirusVersion = ''
if '64' in systemType:
strRegUrl = "D:\PcInfoCheck\config\getVirusVersion.bat"
else:
strRegUrl = "D:\PcInfoCheck\config\getVirusVersion_win7_32.bat"
p = subprocess.Popen(strRegUrl, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
curline = p.stdout.readline()
dictResult = {'flg': 'False', 'version': 'null'}
while (curline != b''):
curline = p.stdout.readline()
if "DisplayVersion\"=" in str(curline):
flg = 1
strVisurVersion = str(curline)
if realVersion in strVisurVersion:
dictResult = {'flg': 'True', 'version': realVersion}
LoggerUtil.log('CheckInfo.checkVisusVersion=' + str(dictResult))
return dictResult
else:
dataVersion = strVisurVersion.split('"')
dictResult = {'flg': 'False', 'version': dataVersion[3]}
LoggerUtil.log('CheckInfo.checkVisusVersion=' + str(dictResult))
return dictResult
LoggerUtil.log('CheckInfo.checkVisusVersion=' + str(dictResult))
return dictResult
最终能够实现的效果: