一种系统异常关机时间获取方法及系统与流程

文档序号:26589745发布日期:2021-09-10 20:31阅读:192来源:国知局
一种系统异常关机时间获取方法及系统与流程

1.本技术实施例涉及信息安全技术领域,具体涉及一种系统异常关机时间获取方法及系统。


背景技术:

2.目前,有关获取国产操作系统开关机时间现有的技术,主要有以下两种方式:
3.第一种是通过读取/var/log/wtmp二进制文件获得操作系统开关机事件及时间,以c语言读取为例,首先声明一个utmp类型的结构体变量(该结构体的定义一般位于/usr/include/bits/utmp.h中),用于保存通过read()方法的只读方式从wtmp文件中读取到的数据,循环调用read()方法直至wtmp文件末尾,每次读取到的数据经由utmp结构体变量接收后,通过简单字符串匹配及查找,识别定位到开关机时间记录,从而得到各开关机时间。
4.第二种是通过操作系统提供的last命令获得操作系统开关机事件及时间,一般该命令所在路径为/usr/bin/last,执行last命令时,同样是读取了/var/log/wtmp中的内容,并以结构化数据的形式输出,一般该last命令输出字段含六列,各列分别的含义为:第一列,用户名;第二列,终端位置,其中pts/0(伪终端)代表从诸如ssh或telnet的远程连接的用户,.tty(teletypewriter)代表直接连接到计算机或者本地连接的用户;第三列,登录ip或者内核,如果显示:0.0或者空文本,代表此为用户通过本地终端连接,除重启活动外,内核版本会显示在对应状态信息中;第四列,开始时间;第五列,结束时间,其中“still login in”表示还未退出、“down”表示持续到正常关机、“crash”表示持续到强制关机;第六列,持续时间。以c语言读取为例,通过调用system()方法执行last命令后,对于system()方法返回数据,逐行按照六个字段通过简单字符串匹配及查找,识别定位到开关机时间记录,从而得到各开关机时间。
5.以上两种获取国产操作系统开关机时间的方式,本质上都是通过读取wtmp文件信息而得来,在通过程序算法读取文件信息过程时,由于简单字符串匹配及查找方法在执行过程中存在不匹配则查找游标回溯的机制(主子符串由第n个字符开始与目标字符串由第1个字符开始逐个字符比较过程中,遇不匹配字符时,主字符串回溯至第n+1个字符开始再次与目标字符串回溯至第1个字符开始逐个字符进行比较,循环往复直至比较结束),该机制在数据记录较多情况下,耗时较长。
6.同时,由于该wtmp文件中,并没有记录且无法记录操作系统异常关机的时间,比如由于内核异常造成的操作系统崩溃退出,或者直接断电后造成的操作系统异常关闭等,对于此类非正常关机的情况,并未在wtmp文件中存入记录,也就无法获知操作系统异常关机的时间。


技术实现要素:

7.为此,本技术实施例提供一种系统异常关机时间获取方法及系统,解决如何识别国产操作系统存在异常关机的问题,解决如何获取国产操作系统异常关机时间的问题,解
决如何通过程序算法快速定位读取国产操作系统日志信息的问题。
8.为了实现上述目的,本技术实施例提供如下技术方案:
9.根据本技术实施例的第一方面,提供了一种系统异常关机时间获取方法,所述方法包括如下步骤:
10.通过读取/var/log/messages获取操作系统运行过程中各种事件的结构化日志信息,日志信息字段包括四列,经过解析各列实际的日志信息判断并定位出系统开机事件,以获得操作系统全部开机事件的前一事件时间;
11.通过执行last

x shutdown命令得到系统正常关机的结构化信息,信息字段包括六列,经过逐行解析第四列信息获得操作系统全部正常关机事件的时间;
12.基于全部开机事件的前一事件时间,排除与全部正常关机事件时间的交集,计算出操作系统全部异常关机时间。
13.可选地,四列日志信息字段中各列分别的含义为:第一列为事件的日期和时间;第二列为事件的来源主机;第三列为产生此事件程序的进程号;第四列为实际的日志信息;
14.所述经过解析各列实际的日志信息判断并定位出系统开机事件,包括:
15.对应前一事件的第一列信息即为系统开机事件的前一事件时间,按此逻辑逐行查看/var/log/messages下的所有日志信息,以获得系统的全部开机事件的前一事件时间。
16.可选地,六列信息字段中各列信息及含义分别为:第一列为shutdown;第二列为system down;第三列为内核版本;第四列为开始时间;第五列为结束时间;第六列为持续时间。
17.可选地,/var/log/messages记录了所有操作系统运行过程中包括开机及关机在内的各种事件及时间,正常开机事件时间之前的事件为上一次操作系统正常开机后至上一次操作系统关机之间的事件。
18.根据本技术实施例的第二方面,提供了一种系统异常关机时间获取系统,所述系统包括:
19.前一时间时间获取模块,用于通过读取/var/log/messages获取操作系统运行过程中各种事件的结构化日志信息,日志信息字段包括四列,经过解析各列实际的日志信息判断并定位出系统开机事件,以获得操作系统全部开机事件的前一事件时间;
20.正常关机时间获取模块,用于通过执行last

x shutdown命令得到系统正常关机的结构化信息,信息字段包括六列,经过逐行解析第四列信息获得操作系统全部正常关机事件的时间;
21.异常关机时间计算模块,用于基于全部开机事件的前一事件时间,排除与全部正常关机事件时间的交集,计算出操作系统全部异常关机时间。
22.可选地,四列日志信息字段中各列分别的含义为:第一列为事件的日期和时间;第二列为事件的来源主机;第三列为产生此事件程序的进程号;第四列为实际的日志信息;
23.所述经过解析各列实际的日志信息判断并定位出系统开机事件,包括:对应前一事件的第一列信息即为系统开机事件的前一事件时间,按此逻辑逐行查看/var/log/messages下的所有日志信息,以获得系统的全部开机事件的前一事件时间。
24.可选地,六列信息字段中各列信息及含义分别为:第一列为shutdown;第二列为system down;第三列为内核版本;第四列为开始时间;第五列为结束时间;第六列为持续时
间。
25.可选地,/var/log/messages记录了所有操作系统运行过程中包括开机及关机在内的各种事件及时间,正常开机事件时间之前的事件为上一次操作系统正常开机后至上一次操作系统关机之间的事件。
26.根据本技术实施例的第三方面,提供了一种设备,所述设备包括:数据采集装置、处理器和存储器;所述数据采集装置用于采集数据;所述存储器用于存储一个或多个程序指令;所述处理器,用于执行一个或多个程序指令,用以执行第一方面任一项所述的方法。
27.根据本技术实施例的第四方面,提供了一种计算机可读存储介质,所述计算机存储介质中包含一个或多个程序指令,所述一个或多个程序指令用于执行如第一方面任一项所述的方法。
28.综上所述,本技术实施例提供了一种系统异常关机时间获取方法及系统,通过读取/var/log/messages获取操作系统运行过程中各种事件的结构化日志信息,日志信息字段包括四列,经过解析各列实际的日志信息判断并定位出系统开机事件,以获得操作系统全部开机事件的前一事件时间;通过执行last

x shutdown命令得到系统正常关机的结构化信息,信息字段包括六列,经过逐行解析第四列信息获得操作系统全部正常关机事件的时间;基于全部开机事件的前一事件时间,排除与全部正常关机事件时间的交集,计算出操作系统全部异常关机时间。从而快速获取国产操作系统异常关机时间。
附图说明
29.为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引伸获得其它的实施附图。
30.本说明书所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容能涵盖的范围内。
31.图1为本技术实施例提供的一种系统异常关机时间获取方法流程示意图;
32.图2为本技术实施例提供的一种系统异常关机时间获取方法实施例示意图;
33.图3为本技术实施例提供的一种系统异常关机时间获取系统框图。
具体实施方式
34.以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
35.国产操作系统的异常关机事件不容忽视,通过本技术实施例提供的方法,针对国产操作系统,可识别操作系统存在异常关机的状态,以及能够快速定位获取到操作系统异常关机的时间,进而为国产操作系统的系统管理员在排查维护工作中确保系统的正常运行
提供帮助,也可为国产操作系统安全保密管理员在负责系统的日常安全保密管理工作提供参考,更可为国产操作系统安全审计员在审计环节提供必要的客观信息支持。
36.图1示出了本技术实施例提供的人一种系统异常关机时间获取方法流程示意图,包括如下步骤:
37.步骤101:通过读取/var/log/messages获取操作系统运行过程中各种事件的结构化日志信息,日志信息字段包括四列,经过解析各列实际的日志信息判断并定位出系统开机事件,以获得操作系统全部开机事件的前一事件时间;
38.步骤102:通过执行last

x shutdown命令得到系统正常关机的结构化信息,信息字段包括六列,经过逐行解析第四列信息获得操作系统全部正常关机事件的时间;
39.步骤103:基于全部开机事件的前一事件时间,排除与全部正常关机事件时间的交集,计算出操作系统全部异常关机时间。
40.在一种可能的实施方式中,四列日志信息字段中各列分别的含义为:第一列为事件的日期和时间;第二列为事件的来源主机;第三列为产生此事件程序的进程号;第四列为实际的日志信息。
41.在一种可能的实施方式中,所述经过解析各列实际的日志信息判断并定位出系统开机事件,包括:对应前一事件的第一列信息即为系统开机事件的前一事件时间,按此逻辑逐行查看/var/log/messages下的所有日志信息,以获得系统的全部开机事件的前一事件时间。
42.在一种可能的实施方式中,六列信息字段中各列信息及含义分别为:第一列为shutdown;第二列为system down;第三列为内核版本;第四列为开始时间;第五列为结束时间;第六列为持续时间。
43.在一种可能的实施方式中,/var/log/messages记录了所有操作系统运行过程中包括开机及关机在内的各种事件及时间,正常开机事件时间之前的事件为上一次操作系统正常开机后至上一次操作系统关机之间的事件。
44.下面对本技术实施例提供的方法进行详细说明:
45.首先,获得操作系统全部开机事件的前一事件时间,包括:
46.通过读取/var/log/messages可得到操作系统运行过程中各种事件的结构化日志信息,日志信息字段分为四列,各列分别的含义为:第一列,事件的日期和时间;第二列,事件的来源主机;第三列,产生此事件程序的进程号;第四列,实际的日志信息。经过解析各列实际的日志信息判断并定位出系统开机事件,由此对应前一事件的第一列信息即为系统开机事件的前一事件时间,按此逻辑逐行查看/var/log/messages下的所有日志信息,可获得系统的全部开机事件的前一事件时间。
47.其次,获得操作系统全部正常关机事件的时间,包括:
48.通过执行“last

x shutdown”命令可得到系统各正常关机的结构化信息,信息字段含六列,各列信息及含义分别为:第一列,shutdown;第二列,system down;第三列,内核版本;第四列,开始时间;第五列,结束时间;第六列,持续时间。经过逐行解析第四列信息,可获得系统的全部正常关机事件的时间。
49.最后,推算出操作系统全部异常关机时间,包括:
50.由于/var/log/messages记录了所有操作系统运行过程中包括开机及关机在内的
各种事件及时间,那么正常开机事件时间之前的事件即为上一次操作系统正常开机后至上一次操作系统关机之间的事件,所以,基于全部开机事件的前一事件时间,排除其与全部正常关机事件时间的交集,可推算出操作系统全部异常关机时间。
51.随着操作系统使用时间的增长,各日志信息数量会越来越庞大,对于日志信息中各种字符串信息的查找会是一个相当耗时的过程,使用kmp算法可有效提高字符串信息的查找效率,结合该算法,应用于上述各过程中后,更利于快速获取国产操作系统异常关机时间。
52.图2示出了本技术实施例提供的系统异常关机时间获取方法实施例示意图,具体包括如下三个部分:
53.获取关机时间集合,打开/var/log/messages文件,首先,判断是否存在尚未被读取的事件信息,如果messages文件不存在,或者已经读取至messages文件末尾,则结束获取过程;否则,继续逐行读取事件信息;进一步,使用kmp算法识别开机事件,若通过匹配“第二、三、四列”开机事件字符串进行识别确定(如图2示),若确定当前行事件信息为开机事件,则解析当前事件的前一事件第一列获取时间,并将此前一事件时间汇总至关机时间集合中。
54.获取正常关机时间集合,执行“last

x shutdown”命令,首先判断是否存在尚未被读取的关机信息,若存在,则逐行读取关机信息,解析第四列获取时间(由于是结构化数据,可直接定位到第四列),并将此时间汇总至正常关机时间集合中。
55.计算异常关机时间集合,将关机时间集合同正常关机时间结合取交集并去除两集合中相同时间后,可得到异常关机时间的集合。至此,获得了国产操作系统的异常关机时间,其中结合使用了kmp算法使提高了解析含大量日志数据信息过程的效率。
56.采用本技术实施例提供的方法,可识别出国产操作系统存在异常关机情况、获取国产操作系统具体异常关机时间、以及通过程序算法快速定位读取国产操作系统日志信息。
57.综上所述,本技术实施例提供了一种系统异常关机时间获取方法及系统,通过读取/var/log/messages获取操作系统运行过程中各种事件的结构化日志信息,日志信息字段包括四列,经过解析各列实际的日志信息判断并定位出系统开机事件,以获得操作系统全部开机事件的前一事件时间;通过执行last

x shutdown命令得到系统正常关机的结构化信息,信息字段包括六列,经过逐行解析第四列信息获得操作系统全部正常关机事件的时间;基于全部开机事件的前一事件时间,排除与全部正常关机事件时间的交集,计算出操作系统全部异常关机时间。从而快速获取国产操作系统异常关机时间。
58.基于相同的技术构思,本技术实施例还提供了一种系统异常关机时间获取系统,如图3所示,所述系统包括:
59.前一时间时间获取模块301,用于通过读取/var/log/messages获取操作系统运行过程中各种事件的结构化日志信息,日志信息字段包括四列,经过解析各列实际的日志信息判断并定位出系统开机事件,以获得操作系统全部开机事件的前一事件时间。
60.正常关机时间获取模块302,用于通过执行last

x shutdown命令得到系统正常关机的结构化信息,信息字段包括六列,经过逐行解析第四列信息获得操作系统全部正常关机事件的时间。
61.异常关机时间计算模块303,用于基于全部开机事件的前一事件时间,排除与全部正常关机事件时间的交集,计算出操作系统全部异常关机时间。
62.在一种可能的实施方式中,四列日志信息字段中各列分别的含义为:第一列为事件的日期和时间;第二列为事件的来源主机;第三列为产生此事件程序的进程号;第四列为实际的日志信息;
63.所述经过解析各列实际的日志信息判断并定位出系统开机事件,包括:对应前一事件的第一列信息即为系统开机事件的前一事件时间,按此逻辑逐行查看/var/log/messages下的所有日志信息,以获得系统的全部开机事件的前一事件时间。
64.在一种可能的实施方式中,六列信息字段中各列信息及含义分别为:第一列为shutdown;第二列为system down;第三列为内核版本;第四列为开始时间;第五列为结束时间;第六列为持续时间。
65.在一种可能的实施方式中,/var/log/messages记录了所有操作系统运行过程中包括开机及关机在内的各种事件及时间,正常开机事件时间之前的事件为上一次操作系统正常开机后至上一次操作系统关机之间的事件。
66.基于相同的技术构思,本技术实施例还提供了一种设备,所述设备包括:数据采集装置、处理器和存储器;所述数据采集装置用于采集数据;所述存储器用于存储一个或多个程序指令;所述处理器,用于执行一个或多个程序指令,用以执行所述的方法。
67.基于相同的技术构思,本技术实施例还提供了一种计算机可读存储介质,所述计算机存储介质中包含一个或多个程序指令,所述一个或多个程序指令用于执行所述的方法。
68.本说明书中上述方法的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。相关之处参见方法实施例的部分说明即可。
69.需要说明的是,尽管在附图中以特定顺序描述了本发明方法的操作,但这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
70.虽然本技术提供了如实施例或流程图的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。
71.上述实施例阐明的单元、装置或模块等,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本技术时可以把各模块的功能在同一个或多个软件和/或硬件中实
现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
72.本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
73.本技术可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本技术,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
74.通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本技术各个实施例或者实施例的某些部分所述的方法。
75.本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本技术可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
76.以上所述的具体实施例,对本技术的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本技术的具体实施例而已,并不用于限定本技术的保护范围,凡在本技术的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1