掌桥专利:专业的专利平台
掌桥专利
首页

软件补丁分析设备和系统

文献发布时间:2023-06-19 11:55:48


软件补丁分析设备和系统

背景技术

软件和/或应用程序是定期发布的,包括补丁(patch)和/或更新和/或操作系统和软件应用程序的新版本。这些补丁等等中的许多补丁都有重要的功能和安全修复程序。

附图说明

现在将仅作为示例来参考附图,其中:

图1是示例性轮询计算设备的框图;

图2是针对当前软件版本指示符来轮询被监视设备的示例性方法的流程图;

图3是示例性软件补丁差异设备的框图;

图4是基于当前软件版本指示符确定自从上次轮询以来已经更新了哪些被监视设备的示例性方法的流程图;

图5是示例性软件补丁分析设备的框图;

图6是生成报告的示例性方法的流程图,该报告指示安装在被监视设备处的相应软件版本的统计信息;

图7是用于控制软件补丁的计算设备的示例性系统的框图;

图8示出了图7的系统的一部分,其示出了示例性轮询计算设备处的操作;

图9示出了图7的系统的一部分,其示出了示例性软件补丁差异设备处的操作;

图10示出了图7的系统的一部分,其示出了示例性软件补丁分析设备处的操作。

具体实施方式

软件和/或应用程序是定期发布的,包括补丁和/或更新和/或操作系统和应用程序的新版本。这些补丁等等中的许多补丁都有重要的功能和安全修复程序。然而,在设备上,最初安装了较旧版本的软件和/或应用程序,并且可能未及时安装补丁。另外,在一家可能会跟踪数千个设备上的数百个应用程序的公司中,跟踪是否安装了补丁可能会变得难以处理。当这样的跟踪和/或应用程序更新被外包时,例如,在“设备即服务(DaaS)”环境中,跟踪和/或软件更新可能会针对数百万个设备上的数千个应用程序,由于每个应用程序跨不同的设备和/或不同的公司可能具有十到十五个或更多个活动版本,这变得甚至更难以处理。

本公开涉及一种系统,该系统包括:轮询计算设备(例如,第一服务器),用于轮询被监视设备,以接收安装在被监视设备处的软件的当前软件版本指示符。该轮询计算设备可以使用轮询线程和/或虚拟机来轮询被监视设备,可以增加或减少轮询线程和/或虚拟机来调整轮询速率,以使间隔时间与被监视设备的最小轮询间隔对齐、和/或接近被监视设备的最小轮询间隔。另外,可以每个给定的时间段轮询一次被监视设备,诸如每天一次、每周一次等等。该轮询计算设备通常将安装在被监视设备处的软件的当前软件版本指示符提供给软件补丁差异引擎。由于被监视设备的数量可能是数百万个,因此尽可能快地轮询被监视设备可能很重要;然而,如果对被监视设备的轮询速率过快,则轮询可能会使被监视设备处的处理资源不堪重负(overwhelmed),这可能会导致CPU(中央处理单元)突发(burst)等等,从而可能中断被监视设备处的服务,和/或可能使被监视设备的用户注意到和/或。因此,通过调整轮询速率以使间隔时间与被监视设备的最小轮询间隔对齐、和/或接近被监视设备的最小轮询间隔,轮询计算设备会尽可能快地轮询被监视设备,而不会导致例如CPU突发等等。

该系统进一步包括:软件补丁差异设备(例如,第二服务器),其从轮询计算设备接收当前软件版本指示符。该软件补丁差异设备基于当前软件版本指示符来确定自从上次轮询以来已经更新了哪些被监视设备。软件补丁差异设备将用于自从上次轮询以来已经更新的被监视设备的相应的软件改变指示符发送到软件补丁分析设备。例如,该软件补丁差异引擎可以使用诸如散列函数之类的加密函数来产生用于被监视设备的当前软件版本指示符的相应标识符(例如,当前软件版本指示符被散列),并且将当前软件版本指示符的相应标识符与安装在被监视设备处的软件的先前软件版本指示符的先前标识符(例如,也是使用加密函数和/或散列函数产生的)进行比较。以这种方式,软件补丁差异设备确定自从上次轮询以来已经更新了哪些被监视设备,并且将当前软件版本指示符提供给软件补丁分析设备。一般而言,自从上次轮询以来尚未更新的被监视设备的信息可能未发送或没有被发送到应用程序补丁分析设备。因此,没有为软件补丁分析设备提供所有被监视设备的信息,使得软件补丁分析设备可以更高效地操作。例如,由于被监视设备的数量可能是数百万个,但是自从上次轮询以来接收到软件更新的被监视设备的数量可能仅是被监视设备总数中的一小部分,因此软件补丁差异引擎会过滤被传输到软件补丁分析设备的信息,以免使软件补丁分析设备的处理资源不堪重负。

该系统进一步包括:软件补丁分析设备(例如,第三服务器),其从软件补丁差异设备接收用于自从上次轮询以来已经更新的被监视设备的相应的软件改变指示符。然后,软件补丁分析设备生成报告,该报告指示安装在被监视设备处的软件的相应软件版本的统计信息。所生成的报告可以被用来例如经由软件更新设备,使得和/或自动使得安装在被监视设备处的软件利用可用软件版本进行自动更新。由于被监视设备的数量可能是数百万个,并且由于软件补丁分析设备接收到用于自从上次轮询以来已经更新的被监视设备的软件改变指示符,因此软件补丁分析设备的处理资源不会不堪重负,并且允许软件补丁分析设备快速且高效地提供报告,这些报告使得软件更新设备能够快速实施软件更新。

尽管本文中使用了术语“软件”,但是该术语被理解为包括安装在被监视设备处的应用程序(向该被监视设备应用更新和/或补丁(等等)),例如,在被监视设备处配置相应存储器和/或相应处理器,以实行应用程序的功能,例如,更新的功能和/或根据补丁的功能等等。

参考图1,示意性地描绘了用于轮询被监视设备的轮询计算设备101。轮询计算设备101包括:存储器112,其存储指令114、最小轮询间隔目标116和最大轮询间隔目标118。轮询计算设备101进一步包括连接到存储器112的处理器120,该处理器120执行指令114。指令114控制处理器120来:基于正被轮询的给定被监视设备的当前处理时间、以及先前被轮询的被监视设备的平均处理时间,确定对被监视设备的队列中的被监视设备进行轮询的间隔时间。指令114进一步控制处理器120来:调整轮询速率,使得间隔时间在最小轮询间隔目标116与最大轮询间隔目标118之间。指令114进一步控制处理器120来:根据轮询速率轮询队列中的被监视设备。指令114进一步控制处理器120来:响应于轮询,从队列中的被监视设备接收安装在被监视设备处的软件的当前软件版本指示符。指令114进一步控制处理器120来:将当前软件版本指示符发送到软件补丁差异设备,该软件补丁差异设备基于当前软件版本指示符来确定自从上次轮询以来已经更新了哪些被监视设备。

例如,轮询计算设备101可以包括经由通信网络等等与被监视设备和软件补丁差异设备通信的服务器、云计算设备等等。因此,尽管未描绘,但轮询计算设备101可以包括通信接口等等,用于与通信网络通信。

另外,轮询计算设备101可以经由安装在被监视设备处的应用程序和/或轮询应用程序来与被监视设备进行通信。应用程序和/或轮询应用程序可以是由与操作轮询计算设备101的实体不同的实体安装在被监视设备处的第三方应用程序和/或轮询应用程序。实际上,在一些示例中,指令114进一步用于:经由安装在被监视设备处的轮询应用程序的应用编程接口(API)来与被监视设备通信。

存储器112耦合到处理器120,并且包括非暂时性机器可读存储介质,其可以是任何电子、磁性、光学或其他物理存储设备。存储器112的非暂时性机器可读存储介质可以包括例如随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、闪速存储器、存储驱动器、光盘等等。存储器112还可以利用可执行操作指令和与处理器120通信的任何其他硬件(例如,诸如通信接口)进行编码。在其他示例中,要领会的是,存储器112可以被基于云的存储系统替换。

存储器112还可以存储可由处理器120执行的操作系统,以向轮询计算设备101提供一般功能,例如,支持各种应用程序的功能,该应用程序诸如是用于访问轮询计算设备101的各种特征的用户界面。操作系统的示例包括:实时操作系统(RTOS),Windows™、macOS™、iOS™、Android™、Linux™和Unix™。存储器112可以附加地存储可由处理器120执行以向轮询计算设备101提供特定功能(诸如下面更详细描述的那些)的应用程序,并且可以包括指令114。

处理器120可以包括中央处理单元(CPU)、微控制器、微处理器、处理核心、现场可编程门阵列(FPGA)或类似物。处理器120和存储器112可以协作以执行各种指令,诸如指令114。

特别地,处理器120可以操作多个虚拟机和/或多个轮询线程(例如,在虚拟机处),以轮询被监视设备。可以通过调整被用来与队列中的被监视设备通信的轮询线程的数量来调整轮询速率。例如,可以增加轮询线程的数量以降低轮询速率,而可以减少轮询线程的数量以提高轮询速率。

例如,指令114可以进一步控制处理器120来:当间隔时间小于最小轮询间隔目标116时,减少轮询线程的数量,直到轮询速率使间隔时间等于最小轮询间隔目标116加上缓冲时间为止。

类似地,指令114可以进一步控制处理器120来:当间隔时间大于最大轮询间隔目标118时,增加轮询线程的数量,直到轮询速率使间隔时间等于最小轮询间隔目标118加上缓冲时间为止。

然而,在一些示例中,指令114可以进一步控制处理器120来:根据轮询速率和缓冲时间对队列中的被监视设备进行轮询。因此,例如,可以引入缓冲时间以减慢轮询速率。

在又另外的示例中,指令114可以进一步控制处理器120来:与一个和/或多个被监视设备列表通信,以生成被监视设备的队列。例如,该一个和/或多个列表可以包括:针对部署了被监视设备的不同公司的被监视设备的列表;这些公司可能已经雇用了一个在设备即服务(DaaS)环境中操作轮询计算设备101的实体来维护被监视设备。该一个和/或多个列表可以包括与被监视设备相关联的公司标识符。

参考图2,描绘了用于轮询被监视设备的方法200的流程图。为了帮助解释方法200,将假设方法200可以与轮询计算设备101一起实行,并且特别是由实现指令114的处理器120实行。实际上,方法200可以是轮询计算设备101轮询被监视设备的一种方式。另外,方法200的以下讨论可以导致对处理器120、轮询计算设备101及其各种组件的进一步理解。另外,要强调的是,方法200可能不按照所示的确切顺序实行,并且各种框可以并行而不是按顺序实行,或者可以完全以不同的顺序实行。

以框201开始,轮询计算设备101基于正被轮询的给定被监视设备的当前处理时间、以及先前被轮询的被监视设备的平均处理时间,确定对被监视设备的队列中的被监视设备进行轮询的间隔时间。

可以通过与存储被监视设备的列表的一个和/或多个存储设备进行通信来确定队列。例如,轮询计算设备101可以轮询多个公司的被监视设备,并且被监视设备的列表可以包括针对每个公司的相应列表。可以根据该列表生成队列,其中该队列指示要轮询被监视设备的次序。被监视设备的数量可以是数百个、数千个或数百万个等等。

另外,队列可以改变以移除或添加被监视设备。例如,当这样的被监视设备从列表中被移除(例如,从被监视取消注册)或被添加到列表中(例如,被注册以被监视)时,被监视设备可以被移除。可能在被监视设备未被委托,和/或操作被监视设备的公司脱离操作轮询计算设备101的实体的DaaS服务时发生移除。类似地,可能会在被监视设备被委托、或操作设备的公司加入操作轮询计算设备101的实体的DaaS服务时发生添加。

在一些示例中,轮询被监视设备的间隔时间可以是第一次轮询队列中的给定被监视设备到例如队列中的其他被监视设备被轮询之后第二次轮询给定被监视设备的时间。一般而言,将间隔时间控制在最小轮询间隔116(使得被监视设备不被过于频繁地轮询,和/或防止被监视设备处的CPU突发)与最大轮询间隔118(使得被监视设备不被过于缓慢地轮询)之间。

可以通过首先确定针对单个轮询线程的正被轮询的被监视设备的当前处理时间来确定间隔时间,该当前处理时间可以被添加到针对单个轮询线程上的先前被轮询的设备的先前总处理时间。可以通过将先前被轮询的被监视设备的平均处理时间乘以先前被轮询的被监视设备的数量来确定先前的总处理时间。

该合计的总和(例如,当前处理时间加上先前的总处理时间)可以除以先前被轮询的被监视设备的数量加上“一”(例如,先前被轮询的被监视设备的数量加上当前被轮询的被监视设备的“一”)。因此,例如,可以在轮询计算设备101处确定用于在单个轮询线程处轮询被监视设备的处理时间的移动平均值。

另外,处理时间的移动平均值可以是针对被用来轮询被监视设备的所有轮询线程的。例如,轮询计算设备101可以操作多个虚拟机,每个虚拟机可以操作多个轮询线程,以与被监视设备处的应用程序和/或轮询应用程序通信,以请求安装在被监视设备处的软件的当前软件版本指示符。轮询线程通常被用来并行轮询被监视设备。

因此,在一些示例中,可以通过将处理时间的平均值和/或移动平均值除以轮询线程的数量来确定每个线程的处理时间。因此,可以通过将每个线程的处理时间乘以要轮询的被监视设备的总数来确定间隔时间。

间隔时间通常指示在给定轮询线程数量的情况下,两次处理单个被监视设备之间的间隔时间(例如,轮询被监视设备一次,然后轮询队列中所有其他被监视设备,到再一次轮询该被监视设备之间的时间)。当被监视设备的数量变化时,间隔时间可以变化。间隔时间可以通过控制轮询线程的数量来控制。

在框203处,轮询计算设备101调整用于轮询被监视设备的轮询速率,使得间隔时间在最小轮询间隔目标116与最大轮询间隔目标118之间,例如,是存储在存储器112中的。换句话说,应该将间隔时间控制为大于最小轮询间隔目标116并且小于最大轮询间隔目标118。

在一些示例中,最小轮询间隔目标116可以通过与被监视设备处的应用程序和/或轮询应用程序通信来确定。该应用程序和/或轮询应用程序可以向轮询计算设备101提供最大允许轮询请求数量(例如,每秒),其可以被用来确定最小轮询间隔目标116。例如,最大允许轮询请求数量通常指示可以对被监视设备进行轮询的速度,这可以被用来确定最小轮询间隔目标116。一旦接收到最大允许轮询请求数量,就可以在存储器112处确定并预先配置最小轮询间隔目标116。然而,在其他示例中,最小轮询间隔目标116可以在存储器112处启发式地确定并预先配置。

在一些示例中,最大轮询间隔目标118可以由系统的管理员预先确定。在又另外的示例中,最大轮询间隔目标118可以基于被监视设备的总数等等。最大轮询间隔目标118可以进一步指示要对被监视设备进行轮询的频率。例如,当每天要对被监视设备进行一次轮询时,最大轮询间隔目标118可以被设置为二十四小时。

在一些示例中,在框203处,轮询计算设备101通过调整被用来与队列中的被监视设备通信的轮询线程的数量来调整轮询速率。特别地,当间隔时间小于最小轮询间隔目标116时,可以减少轮询线程的数量,直到轮询速率使间隔时间等于最小轮询间隔目标116加上缓冲时间为止。类似地,当间隔时间大于最大轮询间隔目标118时,可以增加轮询线程的数量,直到轮询速率使间隔时间等于最小轮询间隔目标116加上缓冲时间为止。一般而言,将轮询线程的数量调整为与最小轮询间隔目标116(例如,加上缓冲时间)对齐,以尽可能快地轮询被监视设备,同时减小在被监视设备处发生CPU突发等等的可能性。

在一些示例中,调整轮询线程的数量,使得间隔时间比最小轮询间隔目标116高约给定百分比,例如,高约10%等等。

在又另外的示例中,一旦队列中的被监视设备被轮询一次,轮询就可以结束,并且可以在给定的时间段之后重复。例如,轮询计算设备101可以每天一次、每周一次等等来轮询被监视设备。

在框205处,轮询计算设备101根据轮询速率来轮询队列中的被监视设备。这样的轮询可以包括:在轮询之前,从密钥管理设备检索用于解密从被监视设备接收到的数据的加密密钥。

在框207处,轮询计算设备101响应于轮询而从队列中的被监视设备接收安装在被监视设备处的软件的当前软件版本指示符。特别地,被轮询的被监视设备可以将安装在其上的软件应用程序,包括但不限于安装在被监视设备处的软件补丁的相应名称和相应版本号等等发送到轮询计算设备101。因此,安装在给定的被监视设备处的软件的当前软件版本指示符可以包括:安装在给定被监视设备处的、用于软件应用程序和/或软件补丁等等的相应名称和相应版本号的列表。因此,当前软件版本指示符表示安装在被监视设备处的软件和/或应用程序的快照。

另外,在一些示例中,可以以加密格式接收当前软件版本指示符,该加密格式可以经由从密钥管理设备接收到的加密密钥在轮询计算设备101处解密。

在框209处,轮询计算设备101将当前软件版本指示符发送到软件补丁差异设备,该软件补丁差异设备基于当前软件版本指示符来确定自从上次轮询以来已经更新了哪些被监视设备。

在一些示例中,在框209处,可以与被监视设备的设备标识符一起发送当前软件版本指示符(例如,可以与用于给定的被监视设备的当前软件版本指示符一起发送给定的被监视设备的设备标识符,该设备标识符在队列中使用)。设备标识符可以包括但不限于设备名称(例如,分配的字母数字名称)、媒体访问控制(MAC)地址、序列号等等。

在又另外的示例中,在框209处,可以与关联于被监视设备的公司标识符一起发送当前软件版本指示符(例如,与给定的被监视设备相关联的公司标识符可以与用于给定的被监视设备的当前软件版本指示符一起被发送)。公司标识符可以包括但不限于公司名称(例如,字母数字名称)、字母数字标识符(例如,分配的参考号)等等,并且如上所述,可以与设备标识符一起被接收。

接下来关注图3,其示意性地描绘了软件补丁差异设备301,以确定自从上次轮询以来更新的被监视设备。软件补丁差异设备301包括:存储器312,其存储指令314。软件补丁差异设备301进一步包括:连接到存储器312的处理器320,处理器320执行指令314。指令314控制处理器320来:接收安装在被监视设备处的软件的当前软件版本指示符。指令314进一步控制处理器320来:使用加密函数316(例如,也存储在存储器312处),生成用于被监视设备的当前软件版本指示符的相应标识符。指令314进一步控制处理器320来:从存储设备中检索安装在被监视设备处的软件的先前软件版本指示符的相应的先前标识符,该相应的先前标识符是使用加密函数316生成的。指令314进一步控制处理器320来:针对当前软件版本指示符,将相应标识符与相应的先前标识符进行比较。指令314进一步控制处理器320来:当针对给定的被监视设备确定了它们之间(例如,相应标识符与相应的先前标识符之间)的差异时:在存储设备处,利用相应的当前软件版本指示符替换用于给定的被监视设备的相应的先前软件版本指示符。指令314进一步控制处理器320来:当针对给定的被监视设备确定了它们之间(例如,在相应标识符与相应的先前标识符之间)的差异时,将给定的被监视设备的相应的软件改变指示符发送到软件补丁分析设备,以触发软件补丁分析设备来生成报告,该报告指示安装在被监视设备处的相应软件版本的统计信息。

例如,软件补丁差异设备301可以包括经由通信网络等等与轮询计算设备101和软件补丁分析设备通信的服务器、云计算设备等等。因此,虽然未描绘,但软件补丁差异设备301可以包括通信接口等等,用于与通信网络通信。

实际上,软件补丁差异设备301可以由例如在DaaS环境中操作轮询计算设备101的同一实体来操作。

存储器312耦合到处理器320,并且包括非暂时性机器可读存储介质,其可以是任何电子、磁性、光学或其他物理存储设备。存储器312的非暂时性机器可读存储介质可以包括例如随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、闪速存储器、存储驱动器、光盘等等。存储器312还可以利用可执行操作指令和与处理器320通信的其他硬件(例如,诸如通信接口)进行编码。在其他示例中,要领会的是,存储器312可以被基于云的存储系统替换。

存储器312还可以存储可由处理器320执行的操作系统,以向软件补丁差异设备301提供一般功能,例如,支持各种应用程序的功能,该应用程序诸如是访问软件补丁差异设备301的各种特征的用户界面。操作系统的示例包括:实时操作系统(RTOS),Windows™、macOS™、iOS™、Android™、Linux™和Unix™。存储器312可以附加地存储可由处理器320执行以向软件补丁差异设备301提供特定功能(诸如下面更详细描述的那些)的应用程序,并且可以包括指令314。

处理器320可以包括中央处理单元(CPU)、微控制器、微处理器、处理核心、现场可编程门阵列(FPGA)或类似物。处理器320和存储器312可以协作以执行各种指令,诸如指令314。

在一些示例中,加密函数316包括散列函数,然而,任何合适的加密函数都在本说明书的范围内。

在又另外的示例中,指令314可以进一步控制处理器320来:将当前软件版本指示符分区,并且使用加密函数316来生成用于当前软件版本指示符的分区部分的子标识符。在这些示例中,指令314可以进一步控制处理器320,以通过将分区部分的子标识符与先前信息的相应分区部分的相应子标识符进行比较,来针对当前软件版本指示符实现相应标识符与相应的先前标识符的比较。

在又另外的示例中,指令314可以进一步控制处理器320来:与要在被监视设备处安装或更新的相应软件的安装软件标识符的列表通信。在这些示例中,指令314可以进一步控制处理器320来:当针对给定的被监视设备确定了差异时,与相应的软件改变指示符一起,包括根据列表确定的安装软件标识符。

在又另外的示例中,指令314可以进一步控制处理器320来:当确定了相应标识符与相应的先前标识符之间的差异时,生成用于被监视设备的子集的相应的软件改变指示符。在这些示例中,指令314可以进一步控制处理器320来:将子集的相应的软件改变指示符发送到软件补丁分析设备。

在又另外的示例中,指令314可以进一步控制处理器320来:与相应的软件改变指示符一起,包括给定的被监视设备的设备标识符,如上所述。

在又另外的示例中,指令314可以进一步控制处理器320来:与相应的软件改变指示符一起,包括与给定的被监视设备相关联的公司标识符,如上所述。

在又另外的示例中,存储设备包括no-SQL(结构化查询语言)数据存储,并且指令314进一步控制处理器320来:与no-SQL数据存储进行通信。

参考图4,描绘了用于确定自从上次轮询以来更新的被监视设备的方法400的流程图。为了帮助解释方法400,将假设方法400可以用软件补丁差异设备301实行,并且具体地可以由实现指令314的处理器320实行。实际上,方法400可以是其中软件补丁差异设备301确定自从上次轮询以来更新的被监视设备的一种方式。另外,方法400的以下讨论可以导致对处理器320、软件补丁差异设备301及其各种组件的进一步理解。另外,要强调的是,方法400可能不按照所示的确切顺序实行,并且各种框可以并行而不是按顺序实行,或者可以完全以不同的顺序执行。

以框401开始,软件补丁差异设备301接收安装在被监视设备处的软件的当前软件版本指示符。例如,可以从轮询计算设备101接收当前软件版本指示符。如上所述,可以与被监视设备的设备标识符和/或与被监视设备相关联的公司标识符(和/或名称)一起,接收用于给定的被监视设备的当前软件版本指示符。

在框403处,软件补丁差异设备301使用加密函数316生成用于被监视设备的当前软件版本指示符的相应标识符。加密函数316可以是散列函数和/或任何其他合适的加密函数,用于生成当前软件版本指示符的唯一和/或计算上唯一的标识符。例如,当用于给定的被监视设备的当前软件版本指示符包括安装在给定的被监视设备处的软件应用程序(包括但不限于,安装在给定的被监视设备处的软件补丁)的相应名称和相应版本号的列表时,该列表可以被输入到散列函数中,该散列函数可以被用来生成用于给定的被监视设备的当前软件版本指示符的相应标识符(例如,散列)。

在框405处,软件补丁差异设备301从存储设备中检索安装在被监视设备处的软件的先前软件版本指示符的相应的先前标识符,该相应的先前标识符是使用加密函数316生成的。例如,在方法400的先前迭代中,可能已经在软件补丁差异设备301处接收到安装在被监视设备处的软件的先前软件版本指示符的先前标识符,并且将其存储在存储设备处;在该先前迭代期间,可能已经使用加密函数316来类似地生成先前软件版本指示符的先前标识符(在先前迭代期间,该先前软件版本指示符原本是当前软件版本指示符)。

在框407处,软件补丁差异设备301针对当前软件版本指示符将相应标识符与相应的先前标识符进行比较。例如,在框407处,软件补丁差异设备301例如在一对一地基础上比较从其接收相应的当前软件版本指示符的被监视设备的相应指示符与相应的先前标识符。

在框409处,软件补丁差异设备301确定在给定的被监视设备的相应标识符与相应的先前标识符之间是否存在差异。当确定在它们之间没有差异时(例如,在框409处为“否”的判定),补丁差异设备301在框407处继续将被监视设备的相应标识符与相应的先前标识符进行比较,从该被监视设备接收相应的当前软件版本指示符。

然而,当针对给定的被监视设备确定了它们之间的差异时(例如,在框409处为“是”的判定),则在框411处,软件补丁差异设备301在存储设备处(例如,检索相应的先前标识符的位置)利用相应的当前软件版本指示符替换用于给定的被监视设备的相应的先前软件版本指示符。

另外,在框413处,软件补丁差异设备301将给定的被监视设备的相应的软件改变指示符发送到软件补丁分析设备,以触发软件补丁分析设备来生成报告,该报告指示安装在被监视设备处的相应软件版本的统计信息。如上所述,可以与设备标识符和/或相关联的公司标识符一起发送相应的软件改变指示符。

在一些示例中,在框413处发送的相应的软件改变指示符可以包括用于安装在给定的被监视设备处的软件的当前软件版本指示符。

在其他示例中,软件补丁差异设备301可以与要在被监视设备处安装或更新的相应软件的安装软件标识符的列表通信(例如,该列表可以存储在设备处,并且软件补丁差异设备301可以与存储列表的设备和/或被用来生成列表的安装软件更新的队列通信)。当针对给定的被监视设备确定了差异时,在框413处发送的相应的软件改变指示符可以与相应的软件改变指示符一起,包括根据列表确定的安装软件标识符,例如,以指示排队等待安装的软件,和/或预期安装在给定的被监视设备处的软件。根据列表确定的、要安装在被监视设备处的软件可以是在逐个公司的基础上的。

尽管未描绘,但可以在循环中重复框407至413,直到针对从其接收相应的当前软件版本指示符的被监视设备进行的比较发生为止。

另外,在实现方法400时,软件补丁差异设备301可以:当确定了相应标识符与相应的先前标识符之间的差异时,生成用于被监视设备的子集的相应的软件改变指示符;并且将该子集的相应的软件改变指示符发送到软件补丁分析设备。

例如,在实现方法400的框407至413时,软件补丁差异设备301可以:针对当前软件版本指示符,将相应标识符与相应的先前标识符进行比较。当针对被监视设备的子集确定了它们之间的差异时,软件补丁差异设备301可以:在存储设备处,利用相应的当前软件版本指示符替换用于被监视设备的子集的相应的先前软件版本指示符。软件补丁差异设备301还将被监视设备的子集的相应的软件改变指示符发送到软件补丁分析设备,以触发该软件补丁分析设备来生成报告,该报告指示安装在被监视设备处的相应软件版本的统计信息。一般而言,可能不会发送子集外部的被监视设备的任何信息。

因此,一般而言,软件补丁差异设备301可以过滤从轮询计算设备101接收的当前软件版本指示符,使得针对被监视设备的子集发送相应的软件改变指示符(例如,其可以包括用于被监视设备的子集的当前软件版本指示符),而不会发送该子集外部的被监视设备的任何信息。因此,将自从先前轮询被监视设备以来已经在其上发生软件版本改变的被监视设备的相应的软件改变指示符(和当前软件版本指示符)发送到软件补丁分析设备,而没有发送自从先前轮询被监视设备以来在其上未发生软件版本改变的被监视设备的任何信息。

结果,软件补丁分析设备接收自从先前轮询被监视设备以来已经在其上发生软件版本改变的被监视设备的数据。由于被监视设备的数量可能是数百万个,因此这样的方法可以减少软件补丁分析设备用于生成报告的处理时间。

另外,当首次注册给定的被监视设备和/或先前未对其进行轮询,并且软件补丁差异设备301(例如,第一次)接收安装在给定设备处的软件的当前软件版本指示符时,存储了安装在被监视设备处的软件的先前软件版本指示符的相应的先前标识符的存储设备将不具有给定的被监视设备的记录。这还导致在框409处做出“是”的判定(例如,框405和407可以包括从存储设备中检索空集,并且将用于给定设备的当前软件版本指示符的相应标识符与该空集进行比较,这导致在框409处做出“是”的判定),使得框411包括:针对给定的被监视设备,在存储设备处生成和填充记录。

类似地,在这些示例中,当首次注册给定的被监视设备,和/或先前未对其进行轮询,并且软件补丁差异设备301(例如,第一次)接收安装在给定设备处的软件的当前软件版本指示符时,框413导致相应的软件改变指示符(和当前软件版本指示符)被发送到软件补丁分析设备,使得可以生成给定的被监视设备的记录(例如,其可以包括当前软件版本指示符)。

接下来关注图5,其示意性地描绘了软件补丁分析设备501,其用于生成报告,该报告指示安装在被监视设备处的软件的相应软件版本的统计信息。软件补丁分析设备501包括:存储器512,其存储指令514。软件补丁分析设备501进一步包括:连接到存储器512的处理器520,处理器520执行指令514。指令514控制处理器520来:从软件补丁差异设备301接收用于被监视设备的子集的相应的软件改变指示符。该子集包括:自从先前轮询被监视设备以来已经在其上发生软件版本改变的被监视设备。相应的软件改变指示符包括:安装在子集的被监视设备处的软件的当前软件版本标识符。指令514进一步控制处理器520来:响应于接收到相应的软件改变指示符:利用被监视设备的子集的当前软件版本标识符来更新存储设备(例如,与以上相对于软件补丁差异设备301所描述的存储设备不同的存储设备)。指令514进一步控制处理器520来:响应于接收到相应的软件改变指示符:从软件版本存储设备中检索安装在被监视设备处的软件的可用软件版本指示符。指令514进一步控制处理器520来:响应于接收到相应的软件改变指示符:通过将可用软件版本指示符与被监视设备的子集的当前软件版本标识符进行比较来生成报告,该报告指示安装在被监视设备处的相应软件版本的统计信息。指令514进一步控制处理器520来通过将可用软件版本指示符与用于该子集外部的被监视设备的先前确定的软件版本指示符进行比较来生成报告。指令514进一步控制处理器520来:响应于接收到相应的软件改变指示符:将报告发送到软件服务代理的通信设备,以对报告中标识的问题进行故障排除,其可以包括通信设备是软件更新设备的一种情况,该软件更新设备利用可用软件版本自动更新安装在被监视设备处的软件。

例如,软件补丁分析设备501可以包括经由通信网络等等与软件补丁差异设备301通信的服务器、云计算设备等等。因此,虽然未描绘,但软件补丁分析设备501可以包括通信接口等等,用于与通信网络通信。

实际上,软件补丁分析设备501可以由例如DaaS环境中操作轮询计算设备101和软件补丁差异设备301的同一实体来操作。

存储器512耦合到处理器520,并且包括可以是任何电子、磁性、光学或其他物理存储设备的非暂时性机器可读存储介质。存储器512的非暂时性机器可读存储介质可以包括例如随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、闪速存储器、存储驱动器、光盘等等。存储器512还可以用可执行操作指令和与处理器520通信的其他硬件(例如,诸如通信接口)进行编码。在其他示例中,要领会的是,存储器512可以被基于云的存储系统替换。

存储器512还可以存储操作系统,该操作系统可由处理器520执行以向软件补丁分析设备501提供一般功能,例如,支持各种应用程序的功能,该应用程序诸如是用于访问软件补丁分析设备501的各种特征的用户界面。操作系统的示例包括:实时操作系统(RTOS),Windows™、macOS™、iOS™、Android™、Linux™和Unix™。存储器512可以附加地存储可由处理器520执行以向软件补丁分析设备501提供特定功能(诸如下面更详细描述的那些)的应用程序,并且可以包括指令514。

处理器520可以包括中央处理单元(CPU)、微控制器、微处理器、处理核心、现场可编程门阵列(FPGA)或类似物。处理器520和存储器512可以协作以执行各种指令,诸如指令514。

在一些示例中,由软件补丁分析设备501生成的报告将使安装在被监视设备处的软件利用可用软件版本自动更新。例如,指令514可以进一步使处理器520将报告发送到软件更新设备。

该软件更新设备用于:从软件补丁分析设备501接收报告;以及作为响应,利用可用软件版本自动更新安装在被监视设备处的软件。

在这些示例中的一些示例中,该软件更新设备用于:从软件补丁分析设备501接收报告;以及作为响应,在根据报告确定的所安装的软件不是可用软件版本的情况下,利用可用软件版本自动更新安装在被监视设备处的软件。

在又另外的示例中,该软件更新设备用于:从软件补丁分析设备接收报告;以及作为响应,在根据报告确定的、并且在逐个公司的基础上确定的所安装的软件不是可用软件版本的情况下,自动更新被监视设备,该被监视设备与公司相关联。

在一些示例中,指令514可以进一步控制处理器520来:在报告中包括缺少给定的软件补丁的被监视设备的列表。

在其他示例中,指令514可以进一步控制处理器520来:在报告中包括与被监视设备相关联的公司的公司标识符。在又另外的示例中,指令514进一步用于:从报告中过滤掉可用软件版本指示符不可用的软件的信息。

该报告可以包括各种统计信息。在一些示例中,该报告包括:在至少给定时间段内缺少给定软件补丁的被监视设备的列表,该列表按照在被监视设备处缺少的软件补丁的数量来排序。

在其他示例中,该报告包括:在至少给定时间段内缺少给定软件补丁的被监视设备的列表,该列表按照被监视设备处缺少的软件补丁的数量来排序。

在又另外的示例中,该报告包括:安装在被监视设备处的软件的列表,该列表按照缺少软件补丁的被监视设备的数量来排序。

在又另外的示例中,该报告包括:安装在被监视设备处的软件的列表,该列表按照被监视设备缺少软件补丁的天数来排序。

参考图6,描绘了用于生成报告的方法600的流程图,该报告指示安装在被监视设备处的软件的相应软件版本的统计信息。为了帮助解释方法600,将假设方法600可以用软件补丁分析设备501实行,并且具体地由实现指令514的处理器520实行。实际上,方法600可以是软件补丁分析设备501确定自从上次轮询以来更新的被监视设备的一种方式。另外,方法600的以下讨论可以导致对处理器520、软件补丁分析设备501及其各种组件的进一步理解。另外,要强调的是,方法600可能不按照所示的确切顺序实行,并且各种框可以并行而不是按顺序实行,或者可以完全以不同的顺序实行。

在框601处,软件补丁分析设备501从软件补丁差异设备301接收用于被监视设备的子集的相应的软件改变指示符。该子集包括:自从先前轮询被监视设备以来已经在其上发生软件版本改变的被监视设备。相应的软件改变指示符包括:安装在子集的被监视设备处的软件的当前软件版本标识符。因此,如上所述,软件补丁分析设备501从软件补丁差异设备301接收软件改变指示符(例如,如上所述,具有当前软件版本指示符、设备标识符、公司标识符等等)。由于软件补丁差异设备301可以不发送自从先前轮询被监视设备以来未发生软件版本改变的被监视设备的信息,因此软件补丁分析设备501可以以与从软件补丁差异设备301接收所有被监视设备的信息相比更高效的方式生成报告(如下所述),而不管自从先前轮询以来是已经发生还是未发生软件版本改变。

在框603处,响应于接收到相应的软件改变指示符,软件补丁分析设备501:利用被监视设备的子集的当前软件版本标识符来更新存储设备(例如,与上文关于软件补丁差异设备301所描述的存储设备不同的存储设备)。当第一次接收到给定的被监视设备的当前软件版本标识符时,框603可以包括在存储设备处生成该给定的被监视设备的记录。

在框605处,软件补丁分析设备501从软件版本存储设备中检索安装在被监视设备处的软件的可用软件版本指示符。例如,软件版本存储设备可以存储可用软件版本指示符,例如当针对安装在被监视设备处的软件发布新版本和/或补丁和/或更新时,可以定期更新可用软件版本指示符。

在框607处,软件补丁分析设备501通过将可用软件版本指示符与被监视设备的子集的当前软件版本标识符进行比较来生成报告,该报告指示安装在被监视设备处的相应软件版本的统计信息。软件补丁分析设备501进一步通过将可用软件版本指示符与用于该子集外部的被监视设备的先前确定的软件版本指示符进行比较来生成报告。该报告可以包括如上所述的各种类型的统计信息、以及任何其他合适类型的统计信息。

在框609处,软件补丁分析设备501将报告发送到软件服务代理的通信设备,以对报告中标识的问题进行故障排除。在这些示例中,通信设备可以是软件更新设备,和/或软件服务代理可以是自动化软件服务代理。无论如何,该报告都可能导致安装在被监视设备处的软件利用可用软件版本来自动更新。在一些示例中,软件更新设备和/或自动化软件服务代理可以使被监视设备基于该报告进行更新。

接下来关注图7,其描绘了控制软件更新的系统700。系统700包括:轮询计算设备101;软件补丁分析设备501;以及与轮询计算设备101和软件补丁分析设备501通信的软件补丁差异设备301。尽管未描绘设备101、301、501的组件(例如,如图1、图3和图5中所示),但是仍将其理解为存在。

一般而言,系统700的组件经由通信网络通信。尽管在图7中没有描绘这样的通信网络,但是系统700的各个组件之间的通信链路被描绘为双向箭头。这样的通信链路可以根据需要是有线和/或无线的,和/或可以包括任何合适数量的通信网络。

系统700进一步包括多个被监视设备701-1、701-2......701-N(以下可互换地统称为被监视设备701,并且一般地被称为被监视设备701)。被监视设备701可以包括智能电话、膝上型计算机、个人计算机等等的任何合适的组合,其可以例如经由通信网络、和/或经由安装在被监视设备701处的轮询应用程序的应用编程接口(API)与轮询计算设备101通信。

虽然在图7中描绘了三个被监视设备701(例如,N=3),但是系统700的被监视设备701的数量“N”可以是数百万个。尽管不是所有被监视设备701都安装了相同的软件应用程序,但跨被监视设备701安装的软件应用程序的数量可能是数百个、数千个或更高。

另外,不同的被监视设备701可以与不同公司相关联,所有公司对于何时更新软件、和/或要在被监视设备701处安装什么版本和/或什么软件补丁可以具有不同的要求。对于单个公司而言,维护这样的软件应用程序可能是一项令人畏缩的任务。因此,公司可以将这样的维护外包给提供DaaS服务的实体;在这样的DaaS环境中,维护这样的软件应用程序可能是一项更大的任务。

因此,在一些示例中,系统700的每一个计算设备101、301、501可以由DaaS实体和/或在DaaS环境中操作,以控制跨被监视设备701的软件更新。

如上所述,轮询计算设备101用于:轮询被监视设备701以接收安装在被监视设备701处的软件的当前软件版本指示符;并且将当前软件版本指示符发送到软件补丁差异设备301。

软件补丁差异设备301用于:基于当前软件版本指示符,确定自从上次轮询以来更新了哪些被监视设备701;以及将用于自从上次轮询以来已经更新的被监视设备701的相应的软件改变指示符发送到软件补丁分析设备501。因此,软件补丁差异设备301充当轮询计算设备101与软件补丁分析设备501之间的过滤器,以例如发送用于被监视设备701的子集的相应的软件改变指示符。该子集包括:自从先前轮询被监视设备701以来已经在其上发生软件版本改变的被监视设备701。相应的软件改变指示符包括:安装在子集的被监视设备701处的软件的当前软件版本标识符。

软件补丁分析设备501用于:响应于接收到用于自从上次轮询以来已经更新的被监视设备701的相应的软件改变指示符来生成报告,该报告指示安装在被监视设备701处的软件的相应软件版本的统计信息。

如所描绘的,轮询计算设备101与被监视设备701的列表703通信(例如,该列表703可以被存储在存储设备处,和/或被维持在存储器112处),并且可以被用来生成上文关于方法200所描述的被监视设备701的队列。列表703可以包括被监视设备701的标识符,并且可以随着被监视设备701被移除或被添加到系统700而被更新,例如,通过在逐个公司的基础上、从公司计算设备接收被监视设备701的标识符列表等等来进行。

如所描绘的,软件补丁差异设备301与安装软件标识符的列表705通信(例如,该列表705可以被存储在存储设备处、和/或被维持在存储器312处)。安装软件标识符的列表705可以包括:排队等待要被安装在被监视设备701处、和/或期望被安装在被监视设备701处的版本和/或当前补丁的列表;例如,列表705可以根据要被安装在被监视设备701处的软件更新队列生成,和/或可以包括要被安装在被监视设备701处的软件更新队列。

如所描绘的,软件补丁差异设备301进一步与存储设备707通信,该存储设备707存储被监视设备701的先前软件版本指示符的标识符709。存储设备707可以包括no-SQL存储设备。例如,标识符709可以例如使用加密函数316在先前轮询被监视设备701时已经被生成并且被存储在存储设备707处。因此,标识符709可以包括被监视设备701的先前软件版本指示符的散列。

如所描绘的,软件补丁分析设备501与存储设备711通信,该存储设备711存储设备和/或软件数据713。存储设备711可以包括:数据库和/或“大数据”存储设备,该数据库和/或“大数据”存储设备存储:先前接收到的安装在被监视设备701处的软件的软件版本标识符(例如,如从软件补丁差异设备301接收的)。存储设备711可以进一步存储:安装在被监视设备701处的软件的可用版本的标识符,该可用版本可以与安装在被监视设备701处的软件的当前版本相同或不同。

例如,如所描绘的,软件补丁分析设备501与软件版本存储设备715通信,该软件版本存储设备715存储安装在被监视设备701处的软件的可用版本的标识符(即,不管是否安装了这样的可用版本,和/或这样的可用版本是否与安装在被监视设备701处的软件的当前版本相同)。例如,安装在被监视设备701处的软件的可用版本的标识符可以包括但不限于:软件补丁的标识符,和/或这样的软件补丁是否是强制性的(例如,在逐个公司的基础上),和/或根据任何合适的方案进行分类。例如,可以将软件补丁分类为强制性的、或优选安装的、或可选的等等。

如所描绘的,软件补丁分析设备501与存储设备信息717的设备通信,该设备信息717可以包括被监视设备701的标识符,类似于被监视设备701的列表703。然而,设备信息717可以包括数据源,从该数据源接收新注册或取消注册的被监视设备701的标识符。例如,新注册的被监视设备701可以是被添加到系统700的被监视设备701,使得可以向其提供DaaS服务,并且新取消注册的被监视设备701可以是从系统700移除的被监视设备701。这样的标识符可以被用来在存储设备711处为新注册或取消注册的被监视设备701生成或删除记录。

如所描绘的,软件补丁分析设备501与存储公司信息719的设备通信,该公司信息719可以包括添加到系统700或从系统700移除的公司的标识符,或更具体地,与被监视设备701相关联的公司的标识符,为该被监视设备701新提供或移除DaaS服务。这样的标识符可以被用来在存储设备711处为添加或移除的公司生成记录,和/或可以将存储设备711处的被监视设备的记录与相应的公司相关联。

如所描绘的,软件补丁分析设备501与通信设备和/或软件更新设备721通信,由软件补丁分析设备501生成的报告被发送到该通信设备和/或软件更新设备721。通信设备和/或软件更新设备721可以与软件代理和/或自动化软件代理相关联,并且可以基于从软件补丁分析设备501接收到的报告自动更新被监视设备701。

现在参照图8、图9和图10描述系统700的操作。

接下来关注图8,其描绘了系统700中与轮询计算设备101的操作有关的一部分。特别地,在图8中,轮询计算设备101正在从被监视设备701处的应用程序和/或轮询应用程序接收最大允许轮询请求数量801,其可以被用来确定最小轮询间隔目标116,例如,通过将最大允许轮询请求数量801除以被监视设备701的数量“N”来确定。

轮询计算设备101可以进一步基于正被轮询的给定被监视设备701的当前处理时间来确定对被监视设备701的队列805中的被监视设备701进行轮询的间隔时间803。轮询计算设备101可以进一步确定先前被轮询的被监视设备701的平均处理时间,例如,确定用于轮询被监视设备701的处理时间的移动平均值。特别地,如图8中描绘的,轮询计算设备101例如通过从列表703接收被监视设备701的标识符806-1、806-2、806-N(可互换地统称为标识符806,并且一般被称为标识符806),并且将被监视设备701的标识符按一定次序放入队列805中,来生成被监视设备701的队列805。

例如,如所描绘的,首先轮询具有标识符806-1的第一被监视设备701-1,其次轮询具有标识符806-2的第二被监视设备701-2,依此类推,直到轮询具有标识符806-N的最后一个被监视设备701-N为止。一旦轮询了最后一个被监视设备701-N,就可以再次轮询第一被监视设备701-1,依此类推。从第一次轮询第一被监视设备701-1到队列805中的所有被监视设备701已被轮询(例如,在最后一个被监视设备701-N被轮询之后)然后再一次轮询第一被监视设备701-1的时间可以是间隔时间803。

另外,如所描绘的,轮询计算设备101正在操作多个轮询线程807-1、807-2......807-M(可互换地统称为轮询线程807,并且通常被称为轮询线程807)来并行轮询被监视设备701。因此,例如,轮询线程807-1可以被用来将轮询请求809发送到第一被监视设备701-1,而并行地,轮询线程807-2可以被用来将轮询请求809发送到第二被监视设备701-2,依此类推。因此,在图8中,轮询请求809被描绘为在轮询线程807上被并行地发送到被监视设备701,其中轮询请求809根据队列805在每个线程807上按次序被发送(例如,根据轮询速率)。作为响应,被监视设备701在轮询线程807上返回安装在被监视设备701处的软件的当前软件版本指示符811。当前软件版本指示符811中的每一个可以被加时间戳。

用于轮询被监视设备701的处理时间的移动平均值可以除以轮询线程的数量“M”,以确定每个线程807轮询被监视设备701的处理时间。因此,例如,当存在“M”个线程807时,每个线程的处理时间是轮询被监视设备701的处理时间除以“M”。

因此,为了确定间隔时间803,可以将每个线程807轮询被监视设备701的处理时间乘以被监视设备701的数量“N”。

另外,也如图8中描绘的,可以通过增加或减少轮询线程807的数量“M”来调整间隔时间803,例如,以将间隔时间803调整为在最小轮询间隔目标116与最大轮询间隔目标118之间。一般而言,轮询计算设备101可以尝试尽可能快地轮询被监视设备701(例如,在不引起CPU突发的情况下),并且因此,可以调整轮询线程807的数量“M”,直到间隔时间803与最小轮询间隔目标116对齐为止,并且具体地被调整为等于最小轮询间隔目标116加上缓冲时间。可以相对于轮询线程807的数量“M”来确定缓冲时间,例如,通过添加比轮询线程807的数量多10%(等等)的线程,这将使得间隔时间803大约等于最小轮询间隔目标116。

另外,在一些示例中,在轮询最后一个被监视设备701-N之后,在再一次轮询第一被监视设备701-1之前可能会出现等待时间,例如,使得每天一次、每周一次等等轮询被监视设备701(例如,如最大轮询间隔目标118表示的)。因此,虽然间隔时间803表示在第一次和第二次轮询第一被监视设备701-1之间的时间,但是当队列805被用来在轮询最后一个被监视设备701-N之后立即再一次轮询被监视设备701时,调整后的间隔时间803可以被用来将轮询速率调整为尽可能快(例如,使得间隔时间803高于最小轮询间隔目标116),而不必在轮询最后一个被监视设备701-N之后立即再一次轮询所有被监视设备701。

然而,尽管图8描绘了调整被监视设备701的轮询速率的特定示例,但用于调整被监视设备701的轮询速率,使得间隔时间803在最小轮询间隔目标116与最大轮询间隔目标118之间的任何合适的过程也在本说明书的范围内。

另外,如所描绘的,例如,与被监视设备701的相应设备标识符806一起,将每一个被监视设备701的当前软件版本指示符811(例如,如加时间戳的)发送到软件补丁差异设备301。

接下来关注图9,其描绘了系统700中与软件补丁差异设备301的操作有关的一部分。特别地,在图9中,软件补丁差异设备301正在从轮询计算设备101接收当前软件版本指示符811,例如,与被监视设备701的相应设备标识符806一起。

对于每一个当前软件版本指示符811,软件补丁差异设备301使用加密函数316生成相应标识符909。例如,如所描绘的,标识符909是根据与设备标识符806-n相关联的指示符811-n生成的。在一些示例中,相应标识符909可以包括指示符811-n的散列。

还如图9中描绘的,存储设备707存储从轮询计算设备101(例如,从被监视设备701的先前轮询)接收到的先前软件版本指示符811的标识符709。通常,先前软件版本标识符709与相应设备标识符806(例如,与指示符811一起接收的相同设备标识符806)相关联地存储,并且可以包括在被监视设备701的先前轮询中接收到的先前软件版本指示符811的散列。

如所描绘的,先前软件版本标识符709包括:与设备标识符806-n相关联地存储的示例性先前标识符909-p。因此,例如,先前标识符909-p是根据先前接收到的与设备标识符806-n相关联的被监视设备701的指示符811、以与标识符909类似的方式(例如,使用加密函数316)生成的。

因此,标识符909表示与设备标识符806-n相关联的被监视设备701处的软件的当前状态的指示,而标识符909-p表示与设备标识符806-n相关联的被监视设备701处的软件的先前状态的指示。

设备标识符806-n被用来从存储设备707中检索标识符909-p,并且将标识符909、909-p进行比较。

当确定它们之间的差异时(例如,自从生成标识符909-p以来,与设备标识符806-n相关联的被监视设备701处的软件已经改变和/或已经更新),软件改变指示950被发送到用于与设备标识符806-n相关联的被监视设备701的软件补丁分析设备501,并且先前标识符909-p在存储设备707处被标识符909替换,使得存储设备707存储与设备标识符806-n相关联的被监视设备701处的软件的当前状态的指示。

然而,当确定它们之间没有差异时(例如,标识符909、909-p相同,并且因此自从生成标识符909-p以来,与设备标识符806-n相关联的被监视设备701处的软件未改变和/或未更新),不会将软件改变指示950发送到用于与设备标识符806-n相关联的被监视设备701的软件补丁分析设备501,并且另外,标识符909-p不会在存储设备707处被替换。

每一个接收到的指示符811的标识符909的生成以类似的方式进行(例如,在循环中进行,直到指示符811被用来生成相应标识符909为止),并且因此,软件补丁差异设备301在存储设备707处维持被监视设备701处的软件状态的当前指示。另外,以这种方式,软件补丁差异设备301确定自从先前轮询被监视设备701以来已经在其上发生软件版本改变的被监视设备701的子集。

如所描绘的,针对子集的软件改变指示符950被发送到软件补丁分析设备501,而没有发送针对子集外部的被监视设备701(例如,自从先前轮询被监视设备701以来未发生软件版本改变)的这样的软件改变指示符。

如所描绘的,被发送到软件补丁分析设备501的软件改变指示符950包括:用于自从先前轮询被监视设备701以来已经在其上发生软件版本改变的被监视设备701的子集的当前软件版本指示符811(例如,如加时间戳的),其也可以与相应设备标识符806一起被发送。如所描绘的,被发送到软件补丁分析设备501的软件改变指示符950进一步包括:用于子集的安装软件标识符955(例如,如从列表705接收的),其也可以与相应设备标识符806一起被发送。因此,对于自从先前轮询被监视设备701以来已经发生软件版本改变的子集中的每一个被监视设备701,可以发送相应的软件改变指示符950,每个指示符包括:相应被监视设备701的设备标识符806,以及相应被监视设备701的当前软件版本指示符811。在一些示例中(如所描绘的),相应的软件改变指示符950可以进一步包括:用于相应被监视设备701的相应的安装软件标识符955。可以一起发送软件改变指示符950,和/或发生标识符909与先前标识符909-p的比较。

另外,由于轮询计算设备101可以每天轮询一次、每周轮询一次被监视设备701等等,因此软件补丁差异设备301的操作也可以每天仅发生一次、每周一次等等;因此,在这些示例中,软件改变指示符950还可以每天一次、每周一次等等被发送到软件补丁分析设备501。

接下来关注图10,其描绘了系统700中与软件补丁分析设备501的操作有关的一部分。特别地,在图10中,软件补丁分析设备501正在从软件补丁差异设备301接收软件改变指示符950。

如所描绘的,软件补丁分析设备501正在操作一个或多个报告生成器1001(例如,一个报告生成器和/或针对不同类型的报告的不同报告生成器),其可以表示实现指令514的软件补丁分析设备501。

如所描绘的,报告生成器1001从软件版本存储设备715接收软件改变指示符950以及可用软件版本指示符1015。如所描绘的,报告生成器1001还可以从设备信息717接收自从上次轮询被监视设备701发生以来已注册或取消注册的被监视设备701的设备标识符1017,和/或报告生成器1001还可以接收自从上次轮询被监视设备701发生以来已经添加或删除的公司的公司标识符1019。

自从先前轮询被监视设备701以来,已经在其上发生软件版本改变的被监视设备701的子集的当前软件版本指示符811(例如,如加时间戳的并且与软件改变指示符950一起接收的)可以被用来在存储设备711处更新设备/软件数据713。特别地,当前软件版本指示符811可以被存储在存储设备711处,并且替换任何先前接收到的软件版本指示符811。

然而,对于自从先前轮询被监视设备701以来已经在其上发生软件版本改变的被监视设备701的子集,接收到包括当前软件版本指示符811的软件改变指示符950,而不是对于其他被监视设备701(例如,因为没有改变任何软件版本)。因此,不替换设备/软件数据713处的任何现有软件版本指示符811,使得设备/软件数据713既包括为子集接收的当前软件版本指示符811,又包括用于子集外部的被监视设备701的先前确定的软件版本指示符,其是先前接收到的。

报告生成器1001生成报告1050,该报告指示安装在被监视设备701处的相应软件版本的统计信息,指示安装在被监视设备701处的相应软件版本的统计信息。报告生成器1001基于软件改变指示符950(例如,包括用于自从先前轮询被监视设备701以来已经在其上发生软件版本改变的被监视设备701的子集的当前软件版本指示符811)来生成报告1050。报告生成器1001可以进一步基于以下内容来生成报告1050:可用软件版本指示符1015和用于子集外部的被监视设备701的先前确定的软件版本指示符(例如,如存储在存储设备711处)。报告生成器1001可以进一步基于以下内容来生成报告1050:设备标识符1017和公司标识符1019。

可以至少通过以下方式来生成报告1050:将可用软件版本指示符1015与用于被监视设备的子集的当前软件版本指示符811(例如,如加时间戳的)进行比较;并且将可用软件版本指示符1015与用于子集外部的被监视设备701的先前确定的软件版本指示符(例如,也如加时间戳的)进行比较。

报告1050可以包括但不限于:在至少给定时间段内缺少给定软件补丁(例如,如可用软件版本指示符1015表示的)的被监视设备701的列表,该列表按照在被监视设备701处缺少的软件补丁的数量、或者按照缺少软件补丁的被监视设备701的数量来排序。该给定时间段可以是最后一周内、最后一个月内、去年,和/或可以选择给定时间段(例如,根据“大数据”过程),使得所有被监视设备701的所有数据被包括在报告1050中。替换地,可以选择给定时间段(例如,根据“大数据”过程),使得被监视设备701的一部分数据被包括在报告1050中,例如,根据当前的、或先前确定的软件版本指示符811的时间戳来过滤。

类似地,报告1050可以包括但不限于:安装在被监视设备701处的软件的列表,该列表按照缺少软件补丁的被监视设备的数量来排序,或按照被监视设备701缺少软件补丁的天数来排序。

实际上,一般而言,报告1050可以总结出:未打补丁到最新软件版本的被监视设备701的数量;缺少最多数量的软件补丁的被监视设备701;具有最多天数未升级设备的软件应用程序(安装在被监视设备701处);具有最多天数利用未打补丁的软件应用程序的被监视设备701;等等。

另外,可以例如使用在报告生成器1001处接收到的任何数据,按照公司标识符、设备标识符等等进一步对报告1050的信息排序。

在一些示例中,报告1050可以包括其中包括的数据的可视化,包括但不限于图表、条形图等等。

在一些示例中,报告1050的生成可以根据“大数据”处理和/或数据库等等发生。

报告1050还可以被用来识别其中未安装强制性软件补丁的被监视设备701、和/或在被监视设备701处安装的软件,该软件具有使软件补丁更新和/或何时安装软件补丁时的不良记录。在一些示例中,与软件改变指示符950一起接收的、用于子集的安装软件标识符955可以被用来进一步过滤报告中的数据(例如,以示出计划的软件更新),和/或识别出计划为被安装并且在被监视设备701处没有安装的软件补丁。在这些示例中的一些示例中,可以生成事件报告(其可以是报告1050的一部分),以指示计划要安装但尚未安装在被监视设备701处的软件补丁。

另外,如所描绘的,报告1050可以被发送到软件更新设备721,该软件更新设备721可以使安装在被监视设备701处的软件利用可用软件版本自动更新。例如,报告1050可以被用来识别缺少强制性软件补丁的被监视设备701,使得软件更新设备721使得这样的强制性软件补丁被安装在被监视设备701处,等等。然而,任何合适类型的软件更新可以经由接收报告1050的软件更新设备721在被监视设备701处发生。

应当意识到,以上提供的各种示例的特征和方面可以组合成也落入本公开范围内的另外的示例。

相关技术
  • 软件补丁分析设备和系统
  • 一种嵌入式系统软件注入热补丁的方法及系统
技术分类

06120113106663