一种针对国产操作系统上的应用软件在线升级管控方法与流程

文档序号:15980769发布日期:2018-11-17 00:18阅读:403来源:国知局

本发明涉及一种针对国产操作系统上的应用软件在线升级管控方法。

背景技术

出于网络信息安全考虑,目前很多单位日常办公逐渐使用基于linux的国产操作系统,为国产操作系统定制的业务软件也日益增多。随着日常办公中各种业务需求变化,业务软件也需要进行相应升级,特别是一些特殊行业因业务关系原因,对计算机上的业务软件升级要求特别高,例如:能集中统一在线升级、能监控升级状态、升级过程不能人为干涉、升级完成即可使用等,而达到这类要求却面临如下问题:

一、安装国产操作系统的计算机硬件平台不同,操作系统的架构也各异,业务软件为兼容必然有多个平台的软件版本,软件升级过程就会出现人为参与平台适配的问题;

二、采用在线升级方式会存在数据被篡改、交互次数过多、时间消耗较长等问题;

三、远程控制国产化操作系统中的第三方业务软件自动完成软件升级、权限赋予、升级重启等工作相当困难。



技术实现要素:

为了克服现有技术的上述缺点,本发明提供了一种针对国产操作系统上的应用软件在线升级管控方法,用于解决国产操作系统上的各类应用软件在线升级管控的问题,具体实现如下:

一、自动识别国产操作系统使用的系统架构,从软件版本库中分析出适用该架构的软件最新版本,免去人为参与平台适配工作;

二、整合软件版本信息并对其进行签名验签,可有效地防止软件版本信息在存储与传输过程中被篡改,又能降低业务间的交互次数和减少软件升级的时间消耗;

三、采用服务端加客户端模式,通过配置运行策略和多种兼容手段并用来控制国产操作系统上的应用软件在线升级和自动重启。

本发明解决其技术问题所采用的技术方案是:一种针对国产操作系统上的应用软件在线升级管控方法,采用服务端加客户端模式,服务端部署于使用国产操作系统的服务器上,用于管理各类应用软件版本及发起软件在线升级操作;客户端部署于各类使用国产操作系统的终端和服务器上,负责升级设备上各类应用软件。

与现有技术相比,本发明的积极效果是:

本发明方法采用服务端和客户端部署到安装国产操作系统的计算机上,可对计算机上的应用软件进行在线升级管控,以满足特定行业用户对分布在远端的计算机上的应用软件进行在线集中升级和监控的要求。整个软件升级过程中,只需服务端一次操作即可自动按照预定的升级流程对计算机上的应用软件进行升级,全程无需被升级计算机的使用者参与,避免出现计算机使用者升级意愿不强、升级时间不可控、人为因素影响软件升级等情况而造成软件升级滞后或失败,以达到软件升级全程自动、无感、高效、可控、可追踪的目的。

附图说明

本发明将通过例子并参照附图的方式说明,其中:

图1为整合后的签名软件包内容格式。

具体实施方式

一、本发明的工作原理

本发明提出服务端加客户端模式,服务端部署于使用国产操作系统的服务器,用于管理各类应用软件版本及发起软件在线升级操作;客户端部署于各类使用国产操作系统的终端和服务器上,负责升级设备上各类应用软件。

基于linux的国产操作系统均支持rpmbuild工具生成的rpm格式安装包,因此本发明的软件升级使用rpm格式安装包,通过服务端与客户端协作,共同完成对第三方应用软件在线升级管控工作。

对应用软件在线升级主要工作流程如下:

(1)应用软件生产厂商向软件发布者提交软件版本说明信息文件及安装包后,软件发布者向服务端上传软件版本;

(2)软件上传过程,服务端使用签名算法对软件安装包及版本信息进行签名;

(3)签名成功后,将签名信息、版本信息与软件安装包整合成一个新的软件包并存入软件版本库中;

(4)软件在线升级时,服务端向客户端下达采集当前设备系统架构及已安装软件指令;

(5)客户端软件收到指令后,采集当前操作系统中的系统架构及已安装软件信息,并反馈采集数据到服务端;

(6)服务端收到反馈数据后,提取出系统架构及软件版本信息;

(7)将系统架构及软件版本信息与软件版本库中的软件版本进行适用匹配分析;

(8)分析出适用的软件版本后,向客户端软件下达整合后的软件安装包;

(9)客户端软件收到签名软件安装包后,提取安装包中签名信息、版本信息、安装包数据,使用验签算法进行验签;

(10)验签通过后缓存软件安装包及版本信息,停止正在运行的待升级软件,并使用rpm命令升级软件;

(11)软件升级成功后,从软件版本信息中获取运行策略后进行使用权限分析;

(12)根据运行策略中的运行权限在新进程中启动该软件,并向服务端软件反馈升级结果。

二、实现方式

根据软件在线升级管控面临的国产操作系统架构差异、软件数据在业务交互间被篡改、软件升级重启难等问题,以下按软件平台适配、软件签名验签、软件升级重启进行详细描述:

1、软件平台适配

安装在不同硬件平台的计算机上的国产操作系统使用的系统架构存在差异,例如:i386、amd64、ia64、mips64el等,安装在上面的应用软件需适配该架构才能正常运行。因此软件在线升级时,既要识别出国产操作系统架构是哪一种,又要分析出哪种软件版本才能升级成功。为了解决软件版本自动识别难题,本专利提出如下思路。

(1)多平台软件版本入库

应用软件生产厂商在发布新版本软件前,要求制作适用各系统架构的软件安装包,并按格式要求填写软件版本说明信息文档,内容包括:软件包名称、软件名称、软件版本号、软件类型、适用平台(如:ia64、i386、i686、amd64、mips64el等)、生产厂商、发布时间、软件大小、描述信息。软件版本说明信息文档为固定格式的excel文件,由应用软件管理者提供给各生产厂商在发布新软件版本时填写,以规范软件版本说明。每个生产厂商按该文件中的格式要求完成填写后,将excel文件和对应的软件安装包一起提交给应用软件管理者在服务端进行发布。excel文件内容固化格式如下:

表1软件版本说明excel文件内容格式

根据多平台软件实际安装验证,在一个平台上制作的软件安装包可兼容多个平台的情况,例如:在i386系统架构计算机上制作的rpm安装包可以在i386、ia64、amd64等系统架构的国产操作系统上运行。因此,在一个平台上制作软件安装包后,若该软件安装包可在多个平台上正常运行,可以在软件版本说明excel文件中的适用平台进行多平台选择。

应用软件管理者收到各厂商提交的软件安装包及软件版本说明excel文件后,提交到服务端的软件版本库。

(2)软件升级版本自动分析

服务端向客户端发起软件在线升级过程中,客户端获取系统架构及系统中已安装的软件信息反馈给服务端进行版本分析,找出与之对应的软件升级版本。

客户端软件采用跨平台的java设计语言提供的api接口获取系统架构信息,达到平台兼容效果,实现方法如下:

propertiesp=system.getproperties();

stringosarch=p.getproperty("os.arch");

使用java设计语言提供的api接口运行国产操作系统上的“rpm–qai”命令可完整的获取到系统中已安装的软件信息,实现方法如下:

客户端采集到系统架构和软件版本信息后,反馈到服务端,服务端提取出软件名称(sname)、版本号(sversion)及系统架构(sarch)后,与版本库中的软件名称(dname)、版本号(dversion)进行完全匹配,而系统架构与版本库中的软件适用平台(darch)进行归属匹配,两者都匹配成功后从版本库中提取出软件版本信息供软件升级使用。匹配规则大致描述为:

sname==dname&&sversion==dversion&&(sarchindarch)。

2、软件签名验签

为了防范软件安装包及版本信息在存储和传输过程中被篡改,减少业务间交互次数,提高软件升级效率及安全性,软件安装包及版本信息在入库前将进行整合签名成一个文件,今后的存储和传输均是一个整合的文件。软件升级时才对整合文件进行验签,验签通过后取出软件安装包再进行软件升级。

软件版本信息入库前,服务端使用签名算法(可根据实际使用需求确定和更换,本发明不作具体说明)对软件版本信息和软件安装包进行签名,并将签名值、软件版本信息、软件安装包按规则融合在一个新的软件安装包中,既方便业务使用也减少业务间交互步骤;软件在升级时,客户端提取签名值并带入到验签算法中对软件版本信息、软件安装包数据进行验签。通过验签后提取完整的软件安装包、软件版本信息。软件签名整合后的新软件包的内容字段如图1所示,包括如下内容:

1)签名长度:4字节,存储签名值字节长度;

2)签名值:包括版本信息长度、版本信息、软件长度、软件内容的签名值;

3)版本信息长度:4字节,存储版本说明信息字节长度;

4)版本信息:json格式版本说明信息;

5)软件长度:4字节,软件内容长度字段;

6)软件内容:软件安装包数据。

整合软件包的签名、验签过程具体步骤说明如下:

(1)将软件版本信息中的软件包名称、软件名称、软件类型、适用平台等属性,按顺序使用json格式进行组装生成字节数组(sv);

(2)计算json格式软件版本信息字节数组长度(svl),并用4字节空间存储;

(3)计算软件安装包数据(si)长度(sil),并用4字节空间存储;

(4)将svl、sv、sil、si按顺序叠加组装成新字节数组(即svl+sv+sil+si),用签名算法计算新数组的签名值(v),并用4个字节空间(vl)存储签名值v;

(5)最后将vl、v、svl、sv、sil、si字节数组依次按顺序存储到一个rpm格式的新文件中,表示为已签名的软件包;

(6)软件升级前将已签名的软件包,分别按vl、v、svl、sv、sil、si顺序提取内容;

(7)将v代入到验签算法中,对svl+sv+sil+si内容进行验签,通过后提取si内容生成一个新的rpm格式安装包,提取sv按json格式解析出软件版本信息。

3、软件升级重启

提取出版本信息和软件安装包后,按流程执行软件停止运行、软件升级及软件重启过程,下面将分别对三个过程中面临的难点及解决方式进行具体描述。

(1)软件停止运行

由于停止脚本不是每个软件必须有的,所以软件版本信息中的停止脚本路径可能没有配置。若配置了软件停止脚本路径(stopsoftpath)则可直接通过java语言运行停止脚本路径停止正在运行的待升级软件,实现方法如下:

stringstopsoft="sh"+stopsoftpath;

processp=runtime.getruntime().exec(stopsoft);

若没有配置软件停止脚本路径,则需要编写组合命令来停止正在运行的待升级软件(softname)。为了让停止命令兼容各国产操作系统且又高效精准的停止该软件,设计一条ps命令获取指定软件名称的进程id号并作为kill命令参数的组合命令来结束该进程,通过java语言调用这样一条命令即可完成停止工作,实现方法如下:

stringstopsoft="ps–ef|grep"+softname+"|awk'{print$2}'|xargskill-9";

processp=runtime.getruntime().exec(stopsoft);

(2)软件升级

提取出新的软件安装包(缓存路径softpath),通过java语言调用rpm命令对该软件安装包进行升级。由于一些软件安装包在升级时,存在一些依赖关系,会导致软件升级不成功,所以需要配合使用rpm命令中的多个参数来忽略软件依赖关系并强制执行升级,实现方法如下

stringrpmcmd="rpm-u--force--nodeps"+softpath;

processp=runtime.getruntime().exec(rpmcmd);

(3)软件重启

软件升级成功后,需要根据软件版本信息中配置的运行权限(isrootrun)、启动脚本路径(startsoftpath)以新进程方式启动升级软件(softname),最后将软件升级及重启结果反馈到服务端。

软件重启过程中,若运行权限配置为要求root用户权限运行,就在启动该程序时指定root权限,否则就使用当前登录用户权限启动该软件。为了不让软件启动后宿主到本发明的客户端中,需要使用gnome-terminal(不支持的情况下使用mate-terminal)命令新建终端窗口,并指定相应用户权限来执行软件启动脚本,实现方法如下:

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1