一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种CLI命令执行方法及相关装置与流程

2021-11-29 13:45:00 来源:中国专利 TAG:

一种cli命令执行方法及相关装置
技术领域
1.本技术涉及计算机技术领域,特别涉及一种cli命令执行方法、cli命令执行装置、服务器以及计算机可读存储介质。


背景技术:

2.随着软件技术的不断发展,与之匹配的输入输出操作也越发复杂。以传统的命令行实现方式来说,技术人员需要面对更加庞大复杂的命令行输入参数、实现方式、输出结构等技术内容,增加主观难度和复杂性。
3.相关技术中,一般是通过技术人员向对应的软件输入cli(command

line interface,命令行界面)命令,以便实现对应的命令执行。但是,通过技术人员输入对应的cli命令实现cli命令的执行,不仅需要门槛,降低了cli命令执行的效率。并且,采用命令行解析框架实现代码复用,容易应为大量复杂的cli命令的参数,导致复用的代码庞大,实现复杂,降低可维护性,进一步降低cli命令执行的便捷性。
4.因此,如何提高cli命令执行的便捷性是本领域技术人员关注的重点问题。


技术实现要素:

5.本技术的目的是提供一种cli命令执行方法、cli命令执行装置、服务器以及计算机可读存储介质,以提高cli命令进行执行的便捷性和可维护性。
6.为解决上述技术问题,本技术提供一种cli命令执行方法,包括:
7.将接收到的cli命令参数进行cli序列化处理,得到序列化cli命令;
8.根据配置文件对所述序列化cli命令进行检查;
9.当所述检查通过时,将所述序列化cli命令发送至服务器,以便所述服务器根据所述序列化cli命令执行命令,得到执行结果,并返回;
10.根据设置的输出模板对所述执行结果进行格式化处理,得到目标执行结果。
11.可选的,根据配置文件对所述序列化cli命令进行检查,包括:
12.根据所述配置文件对所述序列化cli命令进行类型检查;
13.当所述类型检查通过时,对所述序列化cli命令进行参数校验。
14.可选的,根据所述配置文件对所述序列化cli命令进行类型检查,包括:
15.根据所述配置文件的序列化配置信息对所述序列化cli命令的结构体进行类型检查。
16.可选的,当所述类型检查通过时,对所述序列化cli命令进行参数校验,包括:
17.当所述类型检查通过时,根据所述配置文件中的逻辑谓词判断条件对所述序列化cli命令进行参数校验。
18.可选的,根据设置的输出模板对所述执行结果进行格式化处理,得到目标执行结果,包括:
19.根据所述配置文件确定所述输出模板;
20.根据所述输出模板的格式化信息对所述执行结果进行格式化处理,得到所述目标执行结果。
21.本技术还提供一种cli命令执行装置,包括:
22.序列化处理模块,用于将接收到的cli命令参数进行cli序列化处理,得到序列化cli命令;
23.序列化检查模块,用于根据配置文件对所述序列化cli命令进行检查;
24.命令发送模块,用于当所述检查通过时,将所述序列化cli命令发送至服务器,以便所述服务器根据所述序列化cli命令执行命令,得到执行结果,并返回;
25.格式化模块,用于根据设置的输出模板对所述执行结果进行格式化处理,得到目标执行结果。
26.可选的,所述序列化检查模块,包括:
27.类型检查单元,用于根据所述配置文件对所述序列化cli命令进行类型检查;
28.参数校验单元,用于当所述类型检查通过时,对所述序列化cli命令进行参数校验。
29.可选的,所述格式化模块,具体用于根据所述配置文件确定所述输出模板;根据所述输出模板的格式化信息对所述执行结果进行格式化处理,得到所述目标执行结果。
30.本技术还提供一种服务器,包括:
31.存储器,用于存储计算机程序;
32.处理器,用于执行所述计算机程序时实现如上所述的cli命令执行方法的步骤。
33.本技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的cli命令执行方法的步骤。
34.本技术所提供的一种cli命令执行方法,包括:将接收到的cli命令参数进行cli序列化处理,得到序列化cli命令;根据配置文件对所述序列化cli命令进行检查;当所述检查通过时,将所述序列化cli命令发送至服务器,以便所述服务器根据所述序列化cli命令执行命令,得到执行结果,并返回;根据设置的输出模板对所述执行结果进行格式化处理,得到目标执行结果。
35.通过对cli命令参数进行cli序列化处理,得到序列化cli命令,进一步在序列化的基础上对cli命令进行检查,而不是直接对cli命令进行检查,采用序列化的结构降低检查的难度,提高便捷性,进一步将接收到的执行结果进行格式化处理,提高检查结果的可读性,进一步提高执行cli命令的便捷性,降低实现难度。
36.本技术还提供一种cli命令执行装置、服务器以及计算机可读存储介质,具有以上有益效果,在此不做赘述。
附图说明
37.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
38.图1为本技术实施例所提供的一种cli命令执行方法的流程图;
39.图2为本技术实施例所提供的一种cli命令执行装置的结构示意图。
具体实施方式
40.本技术的核心是提供一种cli命令执行方法、cli命令执行装置、服务器以及计算机可读存储介质,以提高cli命令进行执行的便捷性和可维护性。
41.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
42.相关技术中,一般是通过技术人员向对应的软件输入cli命令,以便实现对应的命令执行。但是,通过技术人员输入对应的cli命令实现cli命令的执行,不仅需要门槛,降低了cli命令执行的效率。并且,采用命令行解析框架实现代码复用,容易应为大量复杂的cli命令的参数,导致复用的代码庞大,实现复杂,降低可维护性,进一步降低cli命令执行的便捷性。
43.因此,本技术提供一种cli命令执行方法,通过对cli命令参数进行cli序列化处理,得到序列化cli命令,进一步在序列化的基础上对cli命令进行检查,而不是直接对cli命令进行检查,采用序列化的结构降低检查的难度,提高便捷性,进一步将接收到的执行结果进行格式化处理,提高检查结果的可读性,进一步提高执行cli命令的便捷性,降低实现难度。
44.以下通过一个实施例,对本技术提供的一种cli命令执行方法进行说明。
45.请参考图1,图1为本技术实施例所提供的一种cli命令执行方法的流程图。
46.本实施例中,该方法可以包括:
47.s101,将接收到的cli命令参数进行cli序列化处理,得到序列化cli命令;
48.本步骤旨在将接收到的cli命令参数进行cli序列化处理,得到序列化cli命令。
49.一般的,当接收到cli命令参数时则直接将该cli命令参数发送至服务器中,以便该服务器执行对应的命令。但是,在执行过程中一旦更改cli命令参数出现问题时,则需要服务器返回对应的错误提示,不仅浪费时间还降低执行效率。此外,现有技术中还在本地对cli命令参数进行检查,由于cli命令参数的内容较为复杂,现有的检查操作十分复杂,检查过程可维护性较低,十分便捷。
50.因此,本实施例中对接收到的cli命令参数进行cli序列化处理,得到序列化cli命令,由于该序列化cli命令,是将cli命令参数中的所有字符均视为字符,并对应放置在结构化的变量中,可以直接对结构体进行参数检查等校验操作,提高了校验的效率。
51.其中,序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。通常,对象实例的所有字段都会被序列化,这意味着数据会被表示为实例的序列化数据。这样,能够解释该格式的代码有可能能够确定这些数据的值,而不依赖于该成员的可访问性。类似地,反序列化从序列化的表示形式中提取数据,并直接设置对象状态,这也与可访问性规则无关。
52.本步骤中可以采用现有技术提供的任意一种序列化方式,在此不做具体限定。
53.s102,根据配置文件对序列化cli命令进行检查;
54.在s101的基础上,本步骤旨在根据配置文件对序列化cli命令进行检查。可见,本步骤中就是对于序列化后的cli命令参数进行检查。由于序列化的过程,分离了cli命令参数的解析与校验。对于任意参数与类型,使用序列化功能将参数解析为平台无关、语言无关的中间抽象层,再根据具体的语言实现参数的组装功能,提高独立性,降低耦合。
55.进一步的,本步骤可以包括:
56.步骤1,根据配置文件对序列化cli命令进行类型检查;
57.步骤2,当类型检查通过时,对序列化cli命令进行参数校验。
58.可见,本可选方案中主要是对如何进行检查进行说明。本可选方案中根据配置文件对序列化cli命令进行类型检查,当类型检查通过时,对序列化cli命令进行参数校验。
59.进一步的,上一可选方案中的步骤1,可以包括:
60.根据配置文件的序列化配置信息对序列化cli命令的结构体进行类型检查。
61.可见,本可选方案中主要是对如何进行类型检查进行说明。本可选方案中的配置文件的序列化配置信息中定义了结构体中各个变量的类型,可以通过该类型直接对该结构体进行检查,以便确定类型是否正确。
62.进一步的,上一可选方案中的步骤2,可以包括:
63.当类型检查通过时,根据配置文件中的逻辑谓词判断条件对序列化cli命令进行参数校验。
64.可见,本可选方案中主要是对如何进行参数校验进行说明。本实施例中,当类型检查通过时,对序列化cli命令进行参数校验。其中,采用的逻辑谓词判断条件是指操作数、逻辑谓词、条件组合而成的判断逻辑。也就是说,不再使用固定的校验方式如大小、范围等,而简化为可以简单阅读和理解的逻辑语法以及少数基础函数,降低使用者的学习成本,提高进行操作的便捷性和可维护性。
65.s103,当检查通过时,将序列化cli命令发送至服务器,以便服务器根据序列化cli命令执行命令,得到执行结果,并返回;
66.在s102的基础上,当该检查通过时,将序列化cli命令发送至服务器,以便服务器根据序列化cli命令执行命令,得到执行结果,并返回该执行结果至本地中。可见,本实施例中就是将序列化cli命令发送至服务器中,以便该服务器进行执行。由于进行过检查,降低服务器中进行执行的错误率,提高执行的正确率。
67.s104,根据设置的输出模板对执行结果进行格式化处理,得到目标执行结果。
68.在s103的基础上,本步骤旨在根据设置的输出模板对执行结果进行格式化处理,得到目标执行结果。
69.由于对于服务器的执行结果的输出结构无法进行设置。且为了提高执行结果的可读性,本实施例提出输出模板对执行结果进行格式化。即将输出数据与输出结构分离,由独立运行的输出模板负责输出数据的展示,提高可读性。对于相同数据的不同需求,可以通过使用不同模板达成不同的展示效果。同时,对于结构类似的不同数据,可以使用相同模板达成代码复用的目的。
70.进一步的,本步骤可以包括:
71.步骤1,根据配置文件确定输出模板;
72.步骤2,根据输出模板的格式化信息对执行结果进行格式化处理,得到目标执行结果。
73.可见,本可选方案中主要是对如何格式化处理得到目标执行结果进行说明。本可选方案中,主要是根据配置文件确定输出模板,根据输出模板的格式化信息对执行结果进行格式化处理,得到目标执行结果。
74.综上,本实施例通过对cli命令参数进行cli序列化处理,得到序列化cli命令,进一步在序列化的基础上对cli命令进行检查,而不是直接对cli命令进行检查,采用序列化的结构降低检查的难度,提高便捷性,进一步将接收到的执行结果进行格式化处理,提高检查结果的可读性,进一步提高执行cli命令的便捷性,降低实现难度。
75.以下通过一个具体的实施例,对本技术提供的一种cli命令执行方法做进一步说明。
76.本实施例中,首先根据cli命令参数的来源不同,对于cli client(cli客户全)调用的参数进行初步序列化处理,填充参数。对于restapi第三方模块调用则已经完成序列化,不需处理。然后将序列化的参数被识别为string类型对象,使用共享内存/管道/文件/网络等机制传输参数到实际执行业务逻辑的cli server(cli服务器)当中。cli server执行完成运行逻辑后,根据请求来源的不同,restapi使用cli server自带的restserver返回数据,cli client则根据返回数据调用输出模板格式化返回数据,并进行展示。
77.其中,对于进行执行的过程可以设置对应的配置文件。
78.该配置文件的结构可以包括:
79.main.cfg为主配置文件,用于描述命令的共有属性,如命令id、命令类型、命令名称、命令简介等。
80.inputparam.thrift,用于描述命令的输入参数、参数说明、默认值等,同时提供序列化模板功能。
81.outputparam.thrift,用于描述cli server返回给cli client的数据结构和注释。
82.outputtemplate.yaml,用于输出基础配置文件。
83.outputtemplate.template,用于输出模板配置文件。
84.paramcheck.yaml为参数检查配置文件,用于记录参数检查的表达式。
85.其中,cli client输入参数序列化的过程,可以是cli client输入的参数被识别为等待序列化的结构体参数,记载于inputparam.thrift。本实施例并不限制使用的序列化库,可以使用thrift protobuf iguana等。其中,thrift文件中struct结构体成员对应输入参数,而下一行注释则为samplecommand执行

help说明时输出的用于解释的字符串。程序编译时会自动执行自定义任务,将thrift文件中变量单独抽取到生成的资源文件中。
86.参数成员中可以设置默认值,亦即cli命令中无需填写的默认参数。cli命令执行过程中,对应的结构体成员可以直接写入该struct对应结构体成员。同时,借助序列化库生成的结构体,可以对输入参数进行第一步的类型检查。thrift文件定义中显式声明了数据类型与变量名称,则可以在代码中直接调用由字符串转换到对应类型的转换函数,报错则表示参数输入错误。
87.最终,在cli server调用格式如下:
88../samplecommand

inputmessage=”hello world!
”‑
timeout=600。
89.其中,参数校验模块对于不同输入参数,归类为数字类型和字符串类型。然后使用逻辑运算符and、or、not,对数字类型有greater、less、eq,对于字符串提供strlen、substr、regex等几种基础运行逻辑判断输入参数的合法性。采用的基本语法为操作数

逻辑谓词

条件。其中,复杂条件可以由多种逻辑谓词组装而成,以便将复杂需求拆分成多个易读的简单需求,降低门槛。
90.同时,对于特别难以拆分或条件特殊的参数校验,可以接入脚本语言,通过第三方可扩展脚本提供更加丰富的功能。
91.实际运行中,参数输入的运行逻辑会调用ast(abstract syntax code,抽象语法树)抽象方法将输入的运行逻辑解析为语法树,再根据实际使用的语言编译成二进制编码执行。
92.其中,输出模板用于格式化cli命令行输出信息,用于加载一些输出的相关数据配置,返回值列表,返回格式化数据等。outputtemplate.yaml是主配置文件,记载命令输出的默认参数(或者修改系统默认参数),outputtemplate.template是模板文件,可以有多个,名称亦可自定义,由outputtemplate.yaml导入并处理。
93.在outputtemplate.yaml中,配置文件通过内置字段设置输出参数,如默认大小、色彩设定等。同时,设置了简化输出的简单字符串,避免为简单功能也需要重复设计模板的麻烦问题。其中的displayinfo则设置了返回index应使用名称为哪些的模板文件,根据选择的displaytemplatetype类型不同,输出结果可以为表格型,注释包围型,无装饰型等。
94.outputtemplate.template表示输出模板结构,可以通过set string设置字符串变量,在outputtemplate.yaml中代替某些重复输出的字符串项。由于是cli输出,可以默认所有设置的变量操作均为字符串,程序只负责拼接,复杂判断逻辑应当在实际运行逻辑中执行。同时,使用set template{}格式定义输出模板。该模板类似python列表,由逗号分隔,其中拼接字符串语法类似python字符串格式化以提供更加丰富的输出格式。在这个语法中,所有在双引号内部的字符串,除了${}这种类变量形式外均认为是原生字符串,所以可以使用shell指令标志输出颜色。最后,可以使用if类型对输出进行条件输出,语法同样类似python。
95.可见,本实施例通过对cli命令参数进行cli序列化处理,得到序列化cli命令,进一步在序列化的基础上对cli命令进行检查,而不是直接对cli命令进行检查,采用序列化的结构降低检查的难度,提高便捷性,进一步将接收到的执行结果进行格式化处理,提高检查结果的可读性,进一步提高执行cli命令的便捷性,降低实现难度。
96.下面对本技术实施例提供的cli命令执行装置进行介绍,下文描述的cli命令执行装置与上文描述的cli命令执行方法可相互对应参照。
97.请参考图2,图2为本技术实施例所提供的一种cli命令执行装置的结构示意图。
98.本实施例中,该装置可以包括:
99.序列化处理模块100,用于将接收到的cli命令参数进行cli序列化处理,得到序列化cli命令;
100.序列化检查模块200,用于根据配置文件对序列化cli命令进行检查;
101.命令发送模块300,用于当检查通过时,将序列化cli命令发送至服务器,以便服务
器根据序列化cli命令执行命令,得到执行结果,并返回;
102.格式化模块400,用于根据设置的输出模板对执行结果进行格式化处理,得到目标执行结果。
103.可选的,该序列化检查模块200,可以包括:
104.类型检查单元,用于根据配置文件对序列化cli命令进行类型检查;
105.参数校验单元,用于当类型检查通过时,对序列化cli命令进行参数校验。
106.可选的,该格式化模块400,具体用于根据配置文件确定输出模板;根据输出模板的格式化信息对执行结果进行格式化处理,得到目标执行结果。
107.可选的,该类型检查单元,具体用于根据配置文件的序列化配置信息对序列化cli命令的结构体进行类型检查。
108.可选的,该参数校验单元,具体用于当类型检查通过时,根据配置文件中的逻辑谓词判断条件对序列化cli命令进行参数校验。
109.本技术实施例还提供一种服务器,包括:
110.存储器,用于存储计算机程序;
111.处理器,用于执行所述计算机程序时实现如上所述的cli命令执行方法的步骤。
112.本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的cli命令执行方法的步骤。
113.说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
114.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
115.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd

rom、或技术领域内所公知的任意其它形式的存储介质中。
116.以上对本技术所提供的一种cli命令执行方法、cli命令执行装置、服务器以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献