一种服务器资产扫描的控制方法、装置及设备与流程

文档序号:27554036发布日期:2021-11-24 23:39阅读:104来源:国知局
一种服务器资产扫描的控制方法、装置及设备与流程

1.本技术涉及服务器技术领域,特别是涉及一种服务器资产扫描的控制方法、装置、设备及计算机可读存储介质。


背景技术:

2.服务器中的部件,如中央处理器、内存条、物理磁盘、逻辑磁盘、网卡、风扇等,均可以称为服务器资产。通过在服务器的管理软件中添加这些资产,即可通过(运行于主机设备上的软件)采集器采集得到这些资产的设备性能参数。
3.通常情况下,服务器资产扫描任务通过runnable作为基本的任务表现形式。但是runnable是一种局限很大的接口,run方法中只能记录日志,打印,或者把数据汇总存入某个容器(一方面内存消耗大,另一方面需要控制同步,效率很大的限制),不能返回执行的结果,只能等待所有的资产扫描任务执行完毕后才可以批量获取所有扫描任务的执行结果,使得用户无法在资产扫描过程中获知扫描进程和扫描结果。
4.而若要使用户能够在资产扫描过程中获知扫描结果,则需要停下扫描任务,待将扫描任务的结果返回给用户后,再执行下一个扫描任务,导致扫描任务的整体效率受到影响。
5.而上述情况,在现如今服务器资产数量与日俱增的情况下给用户带来的不良体验逐渐加剧。及时返回扫描结果给用户,减少扫描结果阻塞时间,是本领域技术人员需要解决的技术问题。


技术实现要素:

6.本技术的目的是提供一种服务器资产扫描的控制方法、装置、设备及计算机可读存储介质,用于在不干扰扫描任务总进度的前提下并发回调扫描结果,及时响应扫描结果给用户,减少扫描结果阻塞时间。
7.为解决上述技术问题,本技术提供一种服务器资产扫描的控制方法,包括:
8.预先创建资产扫描线程和回调线程;
9.将资产扫描任务封装为有返回结果的扫描线程任务,并根据所述资产扫描任务的唯一标识生成扫描结果回调任务;
10.将所述扫描线程任务提交至所述资产扫描线程执行,并将所述扫描结果回调任务提交至所述回调线程,以通过所述回调线程根据所述唯一标识并发获取所述扫描线程任务的扫描结果;
11.输出所述扫描结果。
12.可选的,所述创建资产扫描线程和回调线程,具体为:
13.预先创建资产扫描任务线程池和回调线程池,以通过所述资产扫描任务线程池创建所述资产扫描线程,通过所述回调线程池创建回调线程;
14.所述控制方法还包括:
15.根据当前所述扫描线程任务的数量调整所述资产扫描任务线程池中所述资产扫描线程的数量;
16.根据当前所述扫描结果回调任务的数量调整所述回调线程池中所述回调线程的数量。
17.可选的,所述创建资产扫描任务线程池和回调线程池,具体为:
18.利用多线程异步任务服务创建所述资产扫描任务线程池和所述回调线程池。
19.可选的,所述扫描线程任务具体为与future计算关联的计算任务;
20.所述扫描结果回调任务具体为所述多线程异步任务服务中的扫描结果回调任务;
21.相应的,将所述扫描结果回调任务提交至所述回调线程,以通过所述回调线程根据所述唯一标识并发获取所述扫描线程任务的扫描结果,具体为:
22.将所述多线程异步任务服务中的扫描结果回调任务提交至所述回调线程,以调用所述多线程异步任务服务中对应的函数获取所述future计算的结果类中的所述扫描结果;
23.其中,所述多线程异步任务服务中的扫描结果回调任务为poll任务或get任务。
24.可选的,所述扫描线程任务的类型具体为基于所述唯一标识的fping命令;
25.相应的,若在超时时间范围内ping通待扫描设备,则所述扫描线程任务的扫描结果为扫描成功;若超出所述超时时间范围仍未ping通所述待扫描设备,则所述扫描线程任务的扫描结果为扫描失败。
26.可选的,所述输出所述扫描结果,具体包括:
27.判断所述扫描结果是否为扫描成功;
28.如果是,则分析所述扫描结果得到所述待扫描设备的待扫描参数,并输出所述待扫描设备的待扫描参数;
29.如果否,则输出对所述待扫描设备扫描失败的信息。
30.可选的,所述输出所述扫描结果,具体为:
31.将所述扫描结果发送至前端进行显示。
32.为解决上述技术问题,本技术还提供一种服务器资产扫描的控制装置,包括:
33.创建单元,用于预先创建资产扫描线程和回调线程;
34.封装单元,用于将资产扫描任务封装为有返回结果的扫描线程任务,并根据所述资产扫描任务的唯一标识生成扫描结果回调任务;
35.递交单元,用于将所述扫描线程任务提交至所述资产扫描线程执行,并将所述扫描结果回调任务提交至所述回调线程,以通过所述回调线程根据所述唯一标识并发获取所述扫描线程任务的扫描结果;
36.输出单元,用于输出所述扫描结果。
37.为解决上述技术问题,本技术还提供一种服务器资产扫描的控制设备,包括:
38.存储器,用于存储指令,所述指令包括上述任意一项所述服务器资产扫描的控制方法的步骤;
39.处理器,用于执行所述指令。
40.为解决上述技术问题,本技术还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意一项所述服务器资产扫描的控制方法的步骤。
41.本技术所提供的服务器资产扫描的控制方法,通过预先分别创建资产扫描线程和回调线程,将资产扫描任务封装为有返回结果的扫描线程任务,同时根据资产扫描任务的唯一标识生成扫描结果回调任务,而后将扫描线程任务提交至资产扫描线程执行,将扫描结果回调任务提交至回调线程,以通过回调线程根据唯一标识并发获取扫描线程任务的扫描结果,并对获取到的扫描结果进行输出,实现了在资产扫描的过程中并发回调扫描结果,并不对资产扫描任务产生影响,从而及时地响应扫描结果给用户,减少扫描结果阻塞时间。
42.本技术还提供一种服务器资产扫描的控制装置、设备及计算机可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
43.为了更清楚的说明本技术实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
44.图1为本技术实施例提供的一种服务器资产扫描的控制方法的流程图;
45.图2为本技术实施例提供的一种服务器资产扫描的控制装置的结构示意图;
46.图3为本技术实施例提供的一种服务器资产扫描的控制设备的结构示意图。
具体实施方式
47.本技术的核心是提供一种服务器资产扫描的控制方法、装置、设备及计算机可读存储介质,用于在不干扰扫描任务总进度的前提下并发回调扫描结果,及时响应扫描结果给用户,减少扫描结果阻塞时间。
48.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
49.实施例一
50.图1为本技术实施例提供的一种服务器资产扫描的控制方法的流程图。
51.如图1所示,本技术实施例提供的服务器资产扫描的控制方法包括:
52.s101:预先创建资产扫描线程和回调线程。
53.s102:将资产扫描任务封装为有返回结果的扫描线程任务,并根据资产扫描任务的唯一标识生成扫描结果回调任务。
54.s103:将扫描线程任务提交至资产扫描线程执行,并将扫描结果回调任务提交至回调线程,以通过回调线程根据唯一标识并发获取扫描线程任务的扫描结果。
55.s104:输出扫描结果。
56.在具体实施中,对于步骤s101来说,通过创建用于执行资产扫描任务的资产扫描线程和用于执行扫描结果回调任务的回调线程,将扫描任务的执行与回调任务的执行分离,线程之间互不干扰。针对大批量资产扫描任务,为提高扫描效率,可以在服务器管理软件中使用多线程并发技术来创建缓存线程池(cache thread poll)进行资产扫描,并且使
用将新异步任务的生产与已经完成任务的结果消耗相分离的服务。例如可以采用生产者消费者模型来实现资产扫描线程和回调线程间的解耦,生产者提交(submit)执行任务,消费者获取(take)完成任务并按照完成的顺序处理结果,生产者和消费者彼此之间不直接通讯,而通过阻塞队列来通讯。所以生产者递交资产扫描任务后不用等待消费者处理,而是直接提交至阻塞队列;消费者无需找生产者索要资产扫描任务的数据,而是直接从阻塞队列中获取。阻塞队列相当于一个缓冲区,平衡了生产者和消费者的处理能力。这样平台在大批量扫描服务器时可以通过及时回调的方法来获取扫描结果,解决无法及时返回已经扫描完成的结果,不用等到所有资产扫描完成,在多线程实行任务时,并不影响另一个多线程对扫描结果的回调,线程池间互不干扰,回调过程会一个一个独立的返回扫描结果,能够及时响应扫描结果给客户,减少扫描结果阻塞时间。则步骤s101中创建资产扫描线程和回调线程,具体为:
57.预先创建资产扫描任务线程池和回调线程池,以通过资产扫描任务线程池创建资产扫描线程,通过回调线程池创建回调线程。
58.相应的,本技术实施例提供的服务器资产扫描的控制方法还包括:
59.根据当前扫描线程任务的数量调整资产扫描任务线程池中资产扫描线程的数量;
60.根据当前扫描结果回调任务的数量调整回调线程池中回调线程的数量。
61.具体地,预先创建资产扫描任务线程池和回调线程池,将资产扫描任务线程池和回调线程池均设置为根据需要创建新线程的线程池,并在可用时可重新使用以前构造的线程,此种线程池在执行许多短暂的异步任务的程序时也能保持高性能。基于此缓存线程池,调用execute指令将重新启用此前构造的线程,如果没有可用的线程,将创建一个新的线程并将其添加到该线程池中。对于经过预设时间(如六十秒)未被使用的线程,将被终止并从缓存中删除,避免保持闲置的缓存线程池浪费资源。
62.对于步骤s102来说,本技术实施例所针对的资产扫描任务可以包括对服务器中部件的参数进行扫描,例如采集的部件可以包括中央处理器、内存条、物理磁盘、逻辑磁盘、网卡、风扇等,涉及到的性能参数可以包括中央处理器利用率、中央处理器负载、内存利用率、内存负载、网络延迟等,而每个部件又有不同的属性参数,例如中央处理器的属性参数包括主频、核数、型号、状态、缓存等。每个资产扫描任务可以为针对一个部件的一项参数的扫描,也可以为针对一个部件的多项参数的扫描。基于服务器管理软件的设置,通常会定期对服务器资产进行批量扫描,则本技术实施例中的资产扫描任务为每次执行周期性扫描任务中针对具体的部件的扫描任务。各资产扫描任务均设置唯一标识,该唯一标识可以根据资产扫描任务的扫描对象、扫描参数和任务生成时间制定。
63.为实现扫描任务的执行与回调任务的执行分离,将资产扫描任务封装为有返回结果的扫描线程任务,并根据资产扫描任务的唯一标识生成扫描结果回调任务。
64.扫描线程任务的类型可以为基于唯一标识的fping命令。fping是一个类似ping(packet internet groper,一种因特网包探索器,用于测试网络连接量的程序)的程序,与ping不同的是fping可以同时指定多个要ping的目标,与ping要等待某一设备连接超时或发回反馈信息不同,fping给一个设备发送完数据包后,马上给下一个设备发送数据包,实现多设备同时ping。如果某一设备ping通,则此设备将被打上标记,并从等待列表中移除,如果没ping通,说明设备无法到达,设备仍然留在等待列表中,等待后续操作。
65.对于步骤s103来说,如步骤s101所示,通过将资产扫描线程和回调线程解耦(例如可以采用生产者消费者模型),分别将扫描线程任务提交至资产扫描线程执行,将扫描结果回调任务提交至回调线程。
66.资产扫描线程执行扫描线程任务,具体可以通过传入资产ip来调用网络心跳检测的方法,将所有的资产ip进行网络心跳检测,并设置超时时间范围。如利用fping命令,若在超时时间范围内ping通待扫描设备,则扫描线程任务的扫描结果为扫描成功;若超出超时时间范围仍未ping通待扫描设备,则扫描线程任务的扫描结果为扫描失败。
67.由于扫描线程任务是有返回结果的扫描线程任务,通过所采用的服务类型可以确定返回结果的存储位置,因而回调线程可以根据唯一标识并发地自存储位置获取扫描线程任务的扫描结果。例如一些多线程并发任务会将线程的返回结果返回至future计算的结果类中。当扫描完成后,回调线程执行回调算法,可以调用future任务中的函数来及时地检索或获取扫描结果。
68.对于步骤s104来说,输出扫描结果,具体可以为:将扫描结果发送至前端进行显示。在用户交互界面上,可以通过显示扫描进度百分比或扫描任务清单(包括已获得扫描结果的资产扫描任务和未获得扫描结果的文件的资产扫描任务)来展示资产扫描进程,并将扫描结果(包括扫描成功、扫描失败等)展示给用户,以使用户及时得到扫描结果。
69.本技术实施例提供的服务器资产扫描的控制方法,通过预先分别创建资产扫描线程和回调线程,将资产扫描任务封装为有返回结果的扫描线程任务,同时根据资产扫描任务的唯一标识生成扫描结果回调任务,而后将扫描线程任务提交至资产扫描线程执行,将扫描结果回调任务提交至回调线程,以通过回调线程根据唯一标识并发获取扫描线程任务的扫描结果,并对获取到的扫描结果进行输出,实现了在资产扫描的过程中并发回调扫描结果,并不对资产扫描任务产生影响,从而及时地响应扫描结果给用户,减少扫描结果阻塞时间。
70.实施例二
71.在上述实施例中提到,在步骤s101中,通过创建资产扫描任务线程池和回调线程池来实现根据需要调整资产扫描线程的数量以及回调线程的数量。在此基础上,在本技术实施例提供的服务器资产扫描的控制方法中,创建资产扫描任务线程池和回调线程池,具体可以为:利用多线程异步任务服务(executor completion service)创建资产扫描任务线程池和回调线程池。
72.异步任务服务(completion service)是一种将新异步任务的生产与已经完成任务结果消耗相分离的服务,其实现原理是将线程池(executor)技术与阻塞队列(blocking queue)技术结合在一起,同时使用一种有返回结果的线程任务接口callable作为任务的基本单元。在执行资产扫描任务的过程中,资产扫描线程作为生产者,不断地把callable任务放入阻塞队列,回调线程进程作为消费者,通过主动回调的方式取出扫描结果,进行分析并返回分析结果。
73.由于多线程异步任务服务(executor completion service)在执行任务的过程中将计算结果实时地存入future计算的结果类中,故可以将扫描线程任务设计为与future计算关联的计算任务,扫描结果回调任务具体为多线程异步任务服务中的扫描结果回调任务。相应的,步骤s103中将扫描结果回调任务提交至回调线程,以通过回调线程根据唯一标
识并发获取扫描线程任务的扫描结果,具体为:将多线程异步任务服务中的扫描结果回调任务提交至回调线程,以调用多线程异步任务服务中对应的函数获取future计算的结果类中的扫描结果。其中,多线程异步任务服务中的扫描结果回调任务为poll任务或get任务。
74.具体地,当提交一个资产扫描任务到多线程异步任务服务(executor completion service)时,首先将资产扫描任务包装为queueing future。queueing future是future的一个子类,使用异步任务服务(completion service)的提交方法,并返回任务待处理的结果future。
75.如实施例一所述的,资产扫描线程在执行扫描线程任务时,通过传入资产ip的方式来调用网络心跳检测的方法,将所有的资产ip进行网络心跳检测,并设置超时时间范围,并根据是否能在超时时间范围内ping通待扫描设备来确定扫描结果。
76.同时,将基于资产扫描任务的唯一标识生成的扫描结果回调任务提交至回调线程池。回调线程通过采取或轮询扫描结果回调任务,实现主动回调扫描结果。具体地,多线程异步任务服务(executor completion service)在构造函数中会创建一个队列(使用的基于链表的无界队列),该队列的作用是保存资产扫描线程执行的结果。当资产扫描线程执行完扫描线程任务时,回调线程通过调用future任务中的poll方法或get方法,检索或拿到代表下一个完成的任务。
77.实施例三
78.在上述实施例的基础上,在本技术实施例提供的服务器资产扫描的控制方法中,为进一步加快用户获得扫描结果的效率,提高用户体验,步骤s104:输出扫描结果,具体包括:
79.判断扫描结果是否为扫描成功;
80.如果是,则分析扫描结果得到待扫描设备的待扫描参数,并输出待扫描设备的待扫描参数;
81.如果否,则输出对待扫描设备扫描失败的信息。
82.在实施例一中提到,扫描线程任务的类型可以为基于唯一标识的fping命令。通过判断是否能在超时时间范围内ping通待扫描设备来确定扫描结果是扫描成功还是扫描失败。在此基础上,可以通过智能平台管理接口(intelligent platform management interface,ipmi)命令来实现对各种设备参数的获取,基于此,在得到扫描结果后,可以分析扫描结果来得到待扫描设备的待扫描参数,例如实施例一中所列举的中央处理器的属性参数包括主频、核数、型号、状态、缓存等。除此以外,在扫描失败时,还可以进一步分析得到扫描失败的信息,如超时、协议不同、连接异常等。
83.上文详述了服务器资产扫描的控制方法对应的各个实施例,在此基础上,本技术还公开了与上述方法对应的服务器资产扫描的控制装置、设备及计算机可读存储介质。
84.实施例四
85.图2为本技术实施例提供的一种服务器资产扫描的控制装置的结构示意图。
86.如图2所示,本技术实施例提供的服务器资产扫描的控制装置包括:
87.创建单元201,用于预先创建资产扫描线程和回调线程;
88.封装单元202,用于将资产扫描任务封装为有返回结果的扫描线程任务,并根据资产扫描任务的唯一标识生成扫描结果回调任务;
89.递交单元203,用于将扫描线程任务提交至资产扫描线程执行,并将扫描结果回调任务提交至回调线程,以通过回调线程根据唯一标识并发获取扫描线程任务的扫描结果;
90.输出单元204,用于输出扫描结果。
91.可选的,创建单元201创建资产扫描线程和回调线程,具体为:创建单元201预先创建资产扫描任务线程池和回调线程池,以通过资产扫描任务线程池创建资产扫描线程,通过回调线程池创建回调线程;
92.相应的,本技术实施例提供的服务器资产扫描的控制装置还包括:
93.第一调整单元,用于根据当前扫描线程任务的数量调整资产扫描任务线程池中资产扫描线程的数量;
94.第二调整单元,用于根据当前扫描线程任务的数量调整回调线程池中回调线程的数量。
95.由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
96.实施例五
97.图3为本技术实施例提供的一种服务器资产扫描的控制设备的结构示意图。
98.如图3所示,本技术实施例提供的服务器资产扫描的控制设备包括:
99.存储器310,用于存储指令,所述指令包括上述任意一项实施例所述的服务器资产扫描的控制方法的步骤;
100.处理器320,用于执行所述指令。
101.其中,处理器320可以包括一个或多个处理核心,比如3核心处理器、8核心处理器等。处理器320可以采用数字信号处理dsp(digital signal processing)、现场可编程门阵列fpga(field-programmable gate array)、可编程逻辑阵列pla(programmable logic array)中的至少一种硬件形式来实现。处理器320也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器cpu(central processing unit);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器320可以集成有图像处理器gpu(graphics processing unit),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器320还可以包括人工智能ai(artificial intelligence)处理器,该ai处理器用于处理有关机器学习的计算操作。
102.存储器310可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器310还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器310至少用于存储以下计算机程序311,其中,该计算机程序311被处理器320加载并执行之后,能够实现前述任一实施例公开的服务器资产扫描的控制方法中的相关步骤。另外,存储器310所存储的资源还可以包括操作系统312和数据313等,存储方式可以是短暂存储或者永久存储。其中,操作系统312可以为windows。数据313可以包括但不限于上述方法所涉及到的数据。
103.在一些实施例中,服务器资产扫描的控制设备还可包括有显示屏330、电源340、通信接口350、输入输出接口360、传感器370以及通信总线380。
104.本领域技术人员可以理解,图3中示出的结构并不构成对服务器资产扫描的控制
设备的限定,可以包括比图示更多或更少的组件。
105.本技术实施例提供的服务器资产扫描的控制设备,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如上所述的服务器资产扫描的控制方法,效果同上。
106.实施例六
107.需要说明的是,以上所描述的装置、设备实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
108.另外,在本技术各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
109.集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本技术各个实施例所述方法的全部或部分步骤。
110.为此,本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如服务器资产扫描的控制方法的步骤。
111.该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器rom(read

only memory)、随机存取存储器ram(random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
112.本实施例中提供的计算机可读存储介质所包含的计算机程序能够在被处理器执行时实现如上所述的服务器资产扫描的控制方法的步骤,效果同上。
113.以上对本技术所提供的一种服务器资产扫描的控制方法、装置、设备及计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
114.还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那
些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1