CN115904509A - 网络设备的重启指令处理方法及装置 - Google Patents

网络设备的重启指令处理方法及装置 Download PDF

Info

Publication number
CN115904509A
CN115904509A CN202211327033.8A CN202211327033A CN115904509A CN 115904509 A CN115904509 A CN 115904509A CN 202211327033 A CN202211327033 A CN 202211327033A CN 115904509 A CN115904509 A CN 115904509A
Authority
CN
China
Prior art keywords
command
global variable
user
configuration
network equipment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211327033.8A
Other languages
English (en)
Inventor
汤永翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou DPTech Technologies Co Ltd
Original Assignee
Hangzhou DPTech Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou DPTech Technologies Co Ltd filed Critical Hangzhou DPTech Technologies Co Ltd
Priority to CN202211327033.8A priority Critical patent/CN115904509A/zh
Publication of CN115904509A publication Critical patent/CN115904509A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开涉及一种网络设备的重启指令处理方法、装置、电子设备及计算机可读介质。该方法包括:网络设备由用户处获取到重启指令之后,调取第一全局变量;在第一全局变量为有效数值时,生成配置数据未保存的提示信息;将所述提示信息展示在所述用户的命令行中;根据所述用户的操作对所述网络设备进行重启;或根据所述用户的操作将未保存的配置数据进行存储之后再对所述网络设备进行重启。本申请涉及的网络设备的重启指令处理方法、装置、电子设备及计算机可读介质,能够减少了开发人员开发命令的工作量,避免因为没有对命令进行正确的注册出现误判,减少了命令对设备内存的消耗。

Description

网络设备的重启指令处理方法及装置
技术领域
本公开涉及计算机信息处理领域,具体而言,涉及一种网络设备的重启指令处理方法、装置、电子设备及计算机可读介质。
背景技术
管理员通常可以通过Web、命令行方式对网络设备进行维护,Web方式是指管理员可以使用浏览器访问网络设备Web服务器,登录设备之后可以在浏览器上操作给设备下发配置;命令行则是一种交互式终端界面,管理员可以通过console、telnet、ssh等连接方式访问设备,在提示符下输入命令,对设备进行维护。
网络设备中存在大量的配置,为了提高配置设备的效率,常常通过命令行进行配置的批量处理,为了避免频繁的操作文件而降低配置设备的效率,将部分需要保存在配置文件中的数据保存在内存中,保存在内存的数据属于易丢失的数据,在设备重启时保存在内存中的数据会全部丢失,所以在命令行进行配置后需要配置人员手动执行write file命令将内存中的数据保存到配置文件中。如果在命令行进行配置后配置人员忘记执行writefile命令。,当设备重启后,保存在内存中的配置会全部丢失,导致设备产生重大网络问题。因此一种能够解决配置丢失的方法对于网络设备的稳定运行至关重要。
在所述背景技术部分公开的上述信息仅用于加强对本申请的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
有鉴于此,本申请提供一种网络设备的重启指令处理方法、装置、电子设备及计算机可读介质,能够减少了开发人员开发命令的工作量,避免因为没有对命令进行正确的注册出现误判,减少了命令对设备内存的消耗。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请的一方面,提出一种网络设备的重启指令处理方法,该方法包括:网络设备由用户处获取到重启指令之后,调取第一全局变量;在第一全局变量为有效数值时,生成配置数据未保存的提示信息;将所述提示信息展示在所述用户的命令行中;根据所述用户的操作对所述网络设备进行重启;或根据所述用户的操作将未保存的配置数据进行存储之后再对所述网络设备进行重启。
在本申请的一种示例性实施例中,还包括:在所述网络设备的系统内核中增加用于显示是否存在未保存配置数据的第一全局变量;在所述网络设备的系统内核中增加用于保存命令进程号的第二全局变量;在所述网络设备的系统内核中增加用于记录命令进程对配置文件是否进行操作的第三全局变量。
在本申请的一种示例性实施例中,还包括:所述网络设备接收用户对系统文件的写操作命令;基于所述写操作命令调用内核态的入口函数进行处理;所述入口函数根据所述写操作命令对所述第二全局变量和/或所述第三全局变量进行赋值。
在本申请的一种示例性实施例中,所述入口函数根据所述写操作命令对所述第二全局变量和/或所述第三全局变量进行赋值,包括:所述入口函数获取所述写操作命令;判断当前调用的进程号是否等于所述第二全局变量;在当前调用的进程号等于所述第二全局变量且当前操作位于非配置分区时,将所述第三全局变量赋值为第一预设值。
在本申请的一种示例性实施例中,所述入口函数根据所述写操作命令对所述第二全局变量和/或所述第三全局变量进行赋值,还包括:在当前调用的进程号等于所述第二全局变量且当前操作位于配置分区时,不改变所述第三全局变量的赋值。
在本申请的一种示例性实施例中,当前调用的进程号等于所述第二全局变量且当前操作位于非配置分区,包括:在当前调用的进程号等于所述第二全局变量;且当前操作文件的文件路径不为预设路径。
在本申请的一种示例性实施例中,还包括:在所述网络设备的命令行服务进程接收到用户命令时,判断所述用户命令是否为配置命令;在所述用户命令为配置命令时,将所述第三全局变量赋值为第二预设值;执行所述用户命令。
在本申请的一种示例性实施例中,还包括:在执行所述用户命令之后,获取第三全局变量的数值;在所述第三全局变量为第二预设值时,将所述第一全局变量赋为有效值。
在本申请的一种示例性实施例中,还包括:在所述网络设备执行写文档命令之后,将所述第一全局变量赋为无效值。
根据本申请的一方面,提出一种网络设备的重启指令处理装置,该装置包括:指令模块,用于网络设备由用户处获取到重启指令之后,调取第一全局变量;信息模块,用于在第一全局变量为有效数值时,生成配置数据未保存的提示信息;展示模块,用于将所述提示信息展示在所述用户的命令行中;重启模块,用于根据所述用户的操作对所述网络设备进行重启;或根据所述用户的操作将未保存的配置数据进行存储之后再对所述网络设备进行重启。
根据本申请的一方面,提出一种电子设备,该电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上文的方法。
根据本申请的一方面,提出一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上文中的方法。
根据本申请的网络设备的重启指令处理方法、装置、电子设备及计算机可读介质,通过网络设备由用户处获取到重启指令之后,调取第一全局变量;在第一全局变量为有效数值时,生成配置数据未保存的提示信息;将所述提示信息展示在所述用户的命令行中;根据所述用户的操作对所述网络设备进行重启;或根据所述用户的操作将未保存的配置数据进行存储之后再对所述网络设备进行重启的方式,能够减少了开发人员开发命令的工作量,避免因为没有对命令进行正确的注册出现误判,减少了命令对设备内存的消耗。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
通过参照附图详细描述其示例实施例,本申请的上述和其它目标、特征及优点将变得更加显而易见。下面描述的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种网络设备的重启指令处理方法及装置的系统框图。
图2是根据一示例性实施例示出的一种网络设备的重启指令处理方法的流程图。
图3是根据另一示例性实施例示出的一种网络设备的重启指令处理方法的流程图。
图4是根据另一示例性实施例示出的一种网络设备的重启指令处理方法的流程图。
图5是根据另一示例性实施例示出的一种网络设备的重启指令处理方法的流程图。
图6是根据一示例性实施例示出的一种网络设备的重启指令处理装置的框图。
图7是根据一示例性实施例示出的一种电子设备的框图。
图8是根据一示例性实施例示出的一种计算机可读介质的框图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本申请将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本申请概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本申请所必须的,因此不能用于限制本申请的保护范围。
本申请涉及的技术缩略语解释如下:
系统调用:操作系统的主要功能是为管理硬件资源和为应用程序开发人员提供良好的环境来使应用程序具有更好的兼容性,为了达到这个目的,内核提供一系列具备预定功能的多内核函数,通过一组称为系统调用(system call)的接口呈现给用户。系统调用把应用程序的请求传给内核,调用相应的内核函数完成所需的处理,将处理结果返回给应用程序。
Write file命令:该命令会将设备所有的内存配置,写入配置文件。
命令行:一种运行在设备上的提供解析命令、执行命令等功能的服务程序。
本案申请人发现,在现有技术中,命令行在注册时是将命令的视图信息、模块信息、命令原型、命令执行函数、命令帮助函数等信息添加到cmd_element的结构体数组中,在该结构体中增加mem_flag标记用来表示本条命令的数据是否为在内存中保存,mem_flag等于1表示配置保存在内存中,mem_flag等于0表示配置未保存在内存中。在内核中增加全局变量g_mem_flag,表示配置是否发生改变,等于1表示配置发生改变,等于0表示配置未发生改变。通过命令行进行配置时,命令行框架会对输入的命令进行解析,通过遍历注册的命令结构找到匹配的命令后,获取该命令的命令行结构。检查命令结构中的mem_flag标记,若mem_flag等于1,则将g_mem_flag赋值为1。在执行完write file命令后,将g_mem_flag赋值为0。
在命令行执行重启设备命令后,检查g_mem_flag是否非0,若等于0则直接重启设备。若不等于0,则表明配置已发生改变,在命令行打印下一步操作的提示,提示信息为“System configuration has been modified.Save?(Y/N)[N]:”。若用户输入N,则设备将取消保存内存中的配置数据并直接重启设备,设备重启后内存中的数据将全部丢失。若输入Y,则设备执行wirte file命令将内存配置保存到配置文件中再执行重启流程。
现有技术中的方案,命令注册时候在命令结构体中增加mem_flag,导致每条命令所占用的内存空间增加;
现有技术中的方案,由于每条配置需要在注册是分别设置该命令是否保存在内存中,开发人员在进行命令注册时需要考虑将mem_flag赋值正确,给开发人员带来巨大的工作量;
现有技术中的方案,若某些命令的mem_flag设置出错,例如新增命令没有设置该字段、已有的旧命令没有设置该字段,新增命令设置不正确,则会导致重启后该命令配置仍然被丢失,即仍然存在配置丢失的隐患。
有鉴于现有技术中的技术缺陷,本申请提出一种网络设备的重启指令处理方法,可以不增加内存消耗、不增加命令开发难度,且能够统一判断所有配置命令是否是保存在内存里。
下面借助于具体的实施例,对本申请的内容进行详细描述。
图1是根据一示例性实施例示出的一种网络设备的重启指令处理方法、装置的系统框图。
如图1所示,系统架构10可以包括终端设备101、102、103,网络104和网络设备105。网络104用以在终端设备101、102、103和网络设备105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与网络设备105交互,以接收或发送配置指令等。终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
网络设备105可例如由终端设备101、102、103获取到重启指令之后,调取第一全局变量;网络设备105可例如在第一全局变量为有效数值时,生成配置数据未保存的提示信息;网络设备105可例如将所述提示信息展示在所述用户的命令行中;网络设备105可例如根据所述用户的操作对所述网络设备进行重启;或根据所述用户的操作将未保存的配置数据进行存储之后再对所述网络设备进行重启。
网络设备105还可例如增加用于显示是否存在未保存配置数据的第一全局变量;网络设备105还可例如增加用于保存命令进程号的第二全局变量;网络设备105还可例如增加用于记录命令进程对配置文件是否进行操作的第三全局变量。
网络设备105还可例如接收终端设备101、102、103对系统文件的写操作命令;网络设备105还可例如基于所述写操作命令调用内核态的入口函数进行处理;网络设备105还可例如根据所述写操作命令对所述第二全局变量和/或所述第三全局变量进行赋值。
网络设备105的命令行服务进程还可例如接收到用户命令时,判断所述用户命令是否为配置命令;在所述用户命令为配置命令时,将所述第三全局变量赋值为第二预设值;执行所述用户命令。
网络设备105还可例如在执行所述用户命令之后,获取第三全局变量的数值;在所述第三全局变量为第二预设值时,将所述第一全局变量赋为有效值。
网络设备105还可例如执行写文档命令之后,将所述第一全局变量赋为无效值。
网络设备105可以是一个实体的服务器,还可例如为多个服务器组成,需要说明的是,本申请实施例所提供的网络设备的重启指令处理方法可以由网络设备105执行,相应地,网络设备的重启指令处理装置可以设置于网络设备105中。而提供给用户进行配置命令输入的操作端端一般位于终端设备101、102、103中。
在一个实施例中,可在所述网络设备的系统内核中增加用于显示是否存在未保存配置数据的第一全局变量;在所述网络设备的系统内核中增加用于保存命令进程号的第二全局变量;在所述网络设备的系统内核中增加用于记录命令进程对配置文件是否进行操作的第三全局变量。
在一个实际的应用中,可在内核增加全局变量g_write_file_flag(第一全局变量)用来保存当前设备是否存在内存配置,1表示存在内存配置,0表示不存在内存配置,g_write_file_flag初始值为0;
还可在内核增加全局变量g_cli_pid(第二全局变量)保存命令行进程号,每次命令行服务程序启动时,将命令行服务程序进程号通过系统调用保存到内核全局变量g_cli_pid中;
还可内核增加全局变量g_cfg_change(第三全局变量)用来保存命令行程序是否对配置文件进行写操作的标记。
图2是根据一示例性实施例示出的一种网络设备的重启指令处理方法的流程图。网络设备的重启指令处理方法20至少包括步骤S202至S208。
如图2所示,在S202中,网络设备由用户处获取到重启指令之后,调取第一全局变量。即为g_write_file_flag。
在S204中,在第一全局变量为有效数值时,生成配置数据未保存的提示信息。g_write_file_flag用来保存当前设备是否存在内存配置,1表示存在内存配置,0表示不存在内存配置,在g_write_file_flag为有效值,即为1时,代表当前存在未保存的配置数据,则生成提示信息。
在一个实施例中,还包括:在所述网络设备执行写文档命令之后,将所述第一全局变量赋为无效值。每次执行write file(写文档命令)命令都会将g_write_file_flag重新赋值为0。
在S206中,将所述提示信息展示在所述用户的命令行中。可在命令行打印下一步操作的提示,提示信息可为“System configuration has been modified.Save?(Y/N)[N]:”。
在S208中,根据所述用户的操作对所述网络设备进行重启;
在S210中,根据所述用户的操作将未保存的配置数据进行存储之后再对所述网络设备进行重启。
若用户输入N,则设备将取消保存内存中的配置数据并直接重启设备,设备重启后内存中的数据将全部丢失。若输入Y,则设备执行write file命令将内存配置保存到配置文件中再执行重启流程;
根据本申请的网络设备的重启指令处理方法,通过网络设备由用户处获取到重启指令之后,调取第一全局变量;在第一全局变量为有效数值时,生成配置数据未保存的提示信息;将所述提示信息展示在所述用户的命令行中;根据所述用户的操作对所述网络设备进行重启;或根据所述用户的操作将未保存的配置数据进行存储之后再对所述网络设备进行重启的方式,能够减少了开发人员开发命令的工作量,避免因为没有对命令进行正确的注册出现误判,减少了命令对设备内存的消耗。
应清楚地理解,本申请描述了如何形成和使用特定示例,但本申请的原理不限于这些示例的任何细节。相反,基于本申请公开的内容的教导,这些原理能够应用于许多其它实施例。
图3是根据另一示例性实施例示出的一种网络设备的重启指令处理方法的流程图。图3所示的流程30是对图2所示的流程中S102“”的详细描述。
如图3所示,在S302中,入口函数接收写操作命令。
在S304中,当前调用的进程号是否等于所述第二全局变量。
在S306中,当前操作的文件路径是否以配置分区路径开头。
在S308中,将所述第三全局变量赋值为第一预设值,可为1。
在S310中,进行文件写操作。
在一个实施例中,还包括:所述网络设备接收用户对系统文件的写操作命令;基于所述写操作命令调用内核态的入口函数进行处理;所述入口函数根据所述写操作命令对所述第二全局变量和/或所述第三全局变量进行赋值。
其中,所述入口函数根据所述写操作命令对所述第二全局变量和/或所述第三全局变量进行赋值,包括:所述入口函数获取所述写操作命令;判断当前调用的进程号是否等于所述第二全局变量;在当前调用的进程号等于所述第二全局变量且当前操作位于非配置分区时,将所述第三全局变量赋值为第一预设值。在当前调用的进程号等于所述第二全局变量且当前操作位于配置分区时,不改变所述第三全局变量的赋值。
其中,在当前调用的进程号等于所述第二全局变量;且当前操作文件的文件路径不为预设路径时,将所述第三全局变量赋值为第一预设值。
linux系统所有用户态程序对文件进行写操作,最终都需要通过系统调用执行内核态的sys_write函数对文件进行写操作,即sys_write函数为操作系统的写操作的入口函数。而命令行服务程序修改设备配置文件都需要对配置文件进行写操作。
在内核写操作的入口函数sys_write中增加可以下流程:判断当前系统调用的进程号是否等于g_cli_pid,若不相等则不对全局变量g_cfg_change进行赋值,若相等则表示当前写操作为命令行服务程序调用,则继续判断当前写操作的文件路径是否是配置分区,通常linux系统外存需要挂载到某一个目录才能访问,例如挂载到/cfg/目录。因此可以判断若文件路径以/cfg/开头则表示该文件为配置分区文件,重启后不丢失,若文件路径不以/cfg/开头,则表示该文件非配置分区文件,重启后会丢失。若判断当前写操作的文件路径为配置分区路径,则将全局变量g_cfg_change赋值为1(第一预设值),否则不对全局变量g_cfg_change进行赋值。
图4是根据另一示例性实施例示出的一种网络设备的重启指令处理方法的流程图。图4所示的流程40是对图2所示的流程中S102“”的详细描述。
如图4所示,在S402中,在所述网络设备的命令行服务进程接收到用户命令时,判断所述用户命令是否为配置命令。
在S404中,在所述用户命令为配置命令时,将所述第三全局变量赋值为第二预设值。
在S406中,执行所述用户命令。
在S408中,在执行所述用户命令之后,获取第三全局变量的数值。
在S410中,在所述第三全局变量为第二预设值时,将所述第一全局变量赋为有效值。
命令行服务程序接收到命令后,判断当前可执行命令是否为配置命令(通常配置命令注册在配置视图,且命令以非show关键开头),若为配置命令,则调用系统调用将g_cfg_change赋值为0(第二预设值),然后执行命令对应的功能流程,当命令执行成功之后,通过系统调用获取g_cfg_change状态,若g_cfg_change值为1(第一预设值),说明当前配置命令已经调用了系统调用执行了sys_wirte函数将配置保存到配置文件了,若g_cfg_change值为0(第二预设值),则说明当前配置命令没有将配置保存到配置文件中,即只将配置保存到内存,此时通过系统调用将内核全局变量g_write_file_flag赋值为1,表示需要通过write file命令进行保存配置操作。
图5是根据另一示例性实施例示出的一种网络设备的重启指令处理方法的流程图。图4所示的流程40是对图2所示流程的详细描述。
如图5所示,在S502中,用户输入命令。
在S504中,是否为配置命令。
在S506中,执行命令。
在S508中,将第三全局变量设置第二预设值,并执行命令。第二预设值可例如为0。
在S510中,命令执行是否成功。
在S512中,判断第三全局变量是否为第二预设值。
在S514中,将第一全局变量赋值为有效。
本申请的网络设备的重启指令处理方法,在内核增加全局变量g_cli_pid保存命令行进程号,内核写操作入口函数中判断当前进程号为命令行服务程序。
本申请的网络设备的重启指令处理方法,内核写操作入口函数中根据当前操作的文件是否以配置分区挂载目录路径开头,判断当前写操作的文件是否为配置分区下的配置文件。
本申请的网络设备的重启指令处理方法,命令行程序判断当前命令为配置命令后,根据命令执行前后g_cfg_change是否发生改变,判断当前配置命令是否将配置保存到配置文件中。
本申请的网络设备的重启指令处理方法,提供了一种命令行框架统一判断所有配置命令是否将配置保存到内存中的方法。该方案不需要对命令注册流程进行改造,因此减少了开发人员开发命令的工作量,避免因为没有对命令进行正确的注册出现误判。命令注册时没有新增字段,因此减少了命令对设备内存的消耗。
本领域技术人员可以理解实现上述实施例的全部或部分步骤被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本申请提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
此外,需要注意的是,上述附图仅是根据本申请示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图6是根据一示例性实施例示出的一种网络设备的重启指令处理装置的框图。如图6所示,网络设备的重启指令处理装置60包括:指令模块602,信息模块604,展示模块606,重启模块608。网络设备的重启指令处理装置60还可包括:增加模块610,操作模块612,命令模块614。
指令模块602用于网络设备由用户处获取到重启指令之后,调取第一全局变量;
信息模块604用于在第一全局变量为有效数值时,生成配置数据未保存的提示信息;
展示模块606用于将所述提示信息展示在所述用户的命令行中;
重启模块608用于根据所述用户的操作对所述网络设备进行重启;或根据所述用户的操作将未保存的配置数据进行存储之后再对所述网络设备进行重启。
增加模块610用于在所述网络设备的系统内核中增加用于显示是否存在未保存配置数据的第一全局变量;在所述网络设备的系统内核中增加用于保存命令进程号的第二全局变量;在所述网络设备的系统内核中增加用于记录命令进程对配置文件是否进行操作的第三全局变量。
操作模块612用于所述网络设备接收用户对系统文件的写操作命令;基于所述写操作命令调用内核态的入口函数进行处理;所述入口函数根据所述写操作命令对所述第二全局变量和/或所述第三全局变量进行赋值。
命令模块614用于在所述网络设备的命令行服务进程接收到用户命令时,判断所述用户命令是否为配置命令;在所述用户命令为配置命令时,将所述第三全局变量赋值为第二预设值;执行所述用户命令。在执行所述用户命令之后,获取第三全局变量的数值;在所述第三全局变量为第二预设值时,将所述第一全局变量赋为有效值。
根据本申请的网络设备的重启指令处理装置,通过网络设备由用户处获取到重启指令之后,调取第一全局变量;在第一全局变量为有效数值时,生成配置数据未保存的提示信息;将所述提示信息展示在所述用户的命令行中;根据所述用户的操作对所述网络设备进行重启;或根据所述用户的操作将未保存的配置数据进行存储之后再对所述网络设备进行重启的方式,能够减少了开发人员开发命令的工作量,避免因为没有对命令进行正确的注册出现误判,减少了命令对设备内存的消耗。
图7是根据一示例性实施例示出的一种电子设备的框图。
下面参照图7来描述根据本申请的这种实施方式的电子设备700。图7显示的电子设备700仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,电子设备700以通用计算设备的形式表现。电子设备700的组件可以包括但不限于:至少一个处理单元710、至少一个存储单元720、连接不同系统组件(包括存储单元720和处理单元710)的总线730、显示单元740等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元710执行,使得所述处理单元710执行本说明书中描述的根据本申请各种示例性实施方式的步骤。例如,所述处理单元710可以执行如图2,图3,图4,图5中所示的步骤。
所述存储单元720可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)7201和/或高速缓存存储单元7202,还可以进一步包括只读存储单元(ROM)7203。
所述存储单元720还可以包括具有一组(至少一个)程序模块7205的程序/实用工具7204,这样的程序模块7205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线730可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备700也可以与一个或多个外部设备700’(例如键盘、指向设备、蓝牙设备等)通信,使得用户能与该电子设备700交互的设备通信,和/或该电子设备700能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口750进行。并且,电子设备700还可以通过网络适配器760与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器760可以通过总线730与电子设备700的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备700使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,如图8所示,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本申请实施方式的上述方法。
所述软件产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
总体而言,本公开提供了一种网络设备的重启指令处理方法,也是一种现一种可以不增加内存消耗、不增加命令开发难度,且能够统一判断所有配置命令是否是保存在内存里的配置命令的方法。具体而言,在内核增加全局变量g_cli_pid保存命令行进程号,每次命令行服务程序启动时,将命令行服务程序进程号通过系统调用保存到内核全局变量g_cli_pid中。在内核增加全局变量g_write_file_flag用来保存当前设备是否存在内存配置,1表示存在内存配置,0表示不存在内存配置,g_write_file_flag初始值为0。在内核增加全局变量g_cfg_change用来保存命令行程序是否对配置文件进行写操作的标记;linux系统所有用户态程序对文件进行写操作,最终都需要通过系统调用执行内核态的sys_write函数对文件进行写操作,即sys_write函数为操作系统的写操作的入口函数。而命令行服务程序修改设备配置文件都需要对配置文件进行写操作。在内核写操作的入口函数sys_write中增加以下流程:判断当前系统调用的进程号是否等于g_cli_pid,若不相等则不对全局变量g_cfg_change进行赋值,若相等则表示当前写操作为命令行服务程序调用,则继续判断当前写操作的文件路径是否是配置分区,通常linux系统外存需要挂载到某一个目录才能访问,例如挂载到/cfg/目录。因此可以判断若文件路径以/cfg/开头则表示该文件为配置分区文件,重启后不丢失,若文件路径不以/cfg/开头,则表示该文件非配置分区文件,重启后会丢失。若判断当前写操作的文件路径为配置分区路径,则将全局变量g_cfg_change赋值为1,否则不对全局变量g_cfg_change进行赋值。命令行服务程序接收到命令后,判断当前可执行命令是否为配置命令(通常配置命令注册在配置视图,且命令以非show关键开头),若为配置命令,则调用系统调用将g_cfg_change赋值为0,然后执行命令对应的功能流程,当命令执行成功之后,通过系统调用获取g_cfg_change状态,若g_cfg_change值为1,说明当前配置命令已经调用了系统调用执行了sys_wirte函数将配置保存到配置文件了,若g_cfg_change值为0,则说明当前配置命令没有将配置保存到配置文件中,即只将配置保存到内存,此时通过系统调用将内核全局变量g_write_file_flag赋值为1,表示需要通过write file命令进行保存配置操作。在命令行执行重启设备命令后,检查g_write_file_flag是否非0,若等于0则直接重启设备。若不等于0,则表明配置已发生改变,在命令行打印下一步操作的提示,提示信息为“System configuration has beenmodified.Save?(Y/N)[N]:”。若用户输入N,则设备将取消保存内存中的配置数据并直接重启设备,设备重启后内存中的数据将全部丢失。若输入Y,则设备执行write file命令将内存配置保存到配置文件中再执行重启流程/每次执行write file命令都会将g_write_file_flag重新赋值为0。本公开的方法统一判断所有配置命令是否将配置保存到内存中的方法,该方法不需要对命令注册流程进行改造,因此减少了开发人员开发命令的工作量,避免因为没有对命令进行正确的注册出现误判,比关切在命令注册时没有新增字段,因此减少了命令对设备内存的消耗。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该计算机可读介质实现如下功能:网络设备由用户处获取到重启指令之后,调取第一全局变量;在第一全局变量为有效数值时,生成配置数据未保存的提示信息;将所述提示信息展示在所述用户的命令行中;根据所述用户的操作对所述网络设备进行重启;或根据所述用户的操作将未保存的配置数据进行存储之后再对所述网络设备进行重启。
本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本申请实施例的方法。
以上具体地示出和描述了本申请的示例性实施例。应可理解的是,本申请不限于这里描述的详细结构、设置方式或实现方法;相反,本申请意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。

Claims (10)

1.一种网络设备的重启指令处理方法,其特征在于,包括:
网络设备由用户处获取到重启指令之后,调取第一全局变量;
在第一全局变量为有效数值时,生成配置数据未保存的提示信息;
将所述提示信息展示在所述用户的命令行中;
根据所述用户的操作对所述网络设备进行重启;或
根据所述用户的操作将未保存的配置数据进行存储之后再对所述网络设备进行重启。
2.如权利要求1所述的方法,其特征在于,还包括:
在所述网络设备的系统内核中增加用于显示是否存在未保存配置数据的第一全局变量;
在所述网络设备的系统内核中增加用于保存命令进程号的第二全局变量;
在所述网络设备的系统内核中增加用于记录命令进程对配置文件是否进行操作的第三全局变量。
3.如权利要求2所述的方法,其特征在于,还包括:
所述网络设备接收用户对系统文件的写操作命令;
基于所述写操作命令调用内核态的入口函数进行处理;
所述入口函数根据所述写操作命令对所述第二全局变量和/或所述第三全局变量进行赋值。
4.如权利要求3所述的方法,其特征在于,所述入口函数根据所述写操作命令对所述第二全局变量和/或所述第三全局变量进行赋值,包括:
所述入口函数获取所述写操作命令;
判断当前调用的进程号是否等于所述第二全局变量;
在当前调用的进程号等于所述第二全局变量且当前操作位于非配置分区时,将所述第三全局变量赋值为第一预设值。
5.如权利要求4所述的方法,其特征在于,所述入口函数根据所述写操作命令对所述第二全局变量和/或所述第三全局变量进行赋值,还包括:
在当前调用的进程号等于所述第二全局变量且当前操作位于配置分区时,不改变所述第三全局变量的赋值。
6.如权利要求4所述的方法,其特征在于,当前调用的进程号等于所述第二全局变量且当前操作位于非配置分区,包括:
在当前调用的进程号等于所述第二全局变量;且
当前操作文件的文件路径不为预设路径。
7.如权利要求2所述的方法,其特征在于,还包括:
在所述网络设备的命令行服务进程接收到用户命令时,判断所述用户命令是否为配置命令;
在所述用户命令为配置命令时,将所述第三全局变量赋值为第二预设值;
执行所述用户命令。
8.如权利要求7所述的方法,其特征在于,还包括:
在执行所述用户命令之后,获取第三全局变量的数值;
在所述第三全局变量为第二预设值时,将所述第一全局变量赋为有效值。
9.如权利要求1所述的方法,其特征在于,还包括:
在所述网络设备执行写文档命令之后,将所述第一全局变量赋为无效值。
10.一种网络设备的重启指令处理装置,其特征在于,包括:
指令模块,用于网络设备由用户处获取到重启指令之后,调取第一全局变量;
信息模块,用于在第一全局变量为有效数值时,生成配置数据未保存的提示信息;
展示模块,用于将所述提示信息展示在所述用户的命令行中;
重启模块,用于根据所述用户的操作对所述网络设备进行重启;或根据所述用户的操作将未保存的配置数据进行存储之后再对所述网络设备进行重启。
CN202211327033.8A 2022-10-26 2022-10-26 网络设备的重启指令处理方法及装置 Pending CN115904509A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211327033.8A CN115904509A (zh) 2022-10-26 2022-10-26 网络设备的重启指令处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211327033.8A CN115904509A (zh) 2022-10-26 2022-10-26 网络设备的重启指令处理方法及装置

Publications (1)

Publication Number Publication Date
CN115904509A true CN115904509A (zh) 2023-04-04

Family

ID=86480487

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211327033.8A Pending CN115904509A (zh) 2022-10-26 2022-10-26 网络设备的重启指令处理方法及装置

Country Status (1)

Country Link
CN (1) CN115904509A (zh)

Similar Documents

Publication Publication Date Title
CN110489101B (zh) 接口模拟方法、系统、介质和电子设备
KR102193404B1 (ko) 상호작용 개발 환경으로부터의 소프트웨어 아티팩트의 점진적 컴파일링 기법
CN115309511B (zh) 基于Xen的数据交互方法、装置、存储介质以及电子设备
KR20060063642A (ko) 서브시스템 간의 자원 공유를 가능하게 하는 방법 및시스템
US11288170B1 (en) Log analysis debugging without running on real production environment
CN116257320B (zh) 一种基于dpu虚拟化配置管理方法、装置、设备及介质
CN107911816B (zh) 用于多模IoT设备的启动方法、多模IoT设备及存储介质
CN107341017B (zh) Ui设计方法、装置、设备及存储介质
CN116051031A (zh) 项目调度系统、介质及电子设备
CN115904509A (zh) 网络设备的重启指令处理方法及装置
CN106775608B (zh) 独立系统进程的实现方法和装置
CN112988192A (zh) 版本更新方法、装置、电子设备及存储介质
CN113961370A (zh) Bmc与bios通信的方法、装置、服务器及存储介质
CN109960522B (zh) 一种软件升级方法及装置
CN113110846A (zh) 一种环境变量的获取方法及装置
CN112905931A (zh) 页面信息的展示方法、装置、电子设备及存储介质
CN114579167A (zh) 一种下载应用升级文件的方法、装置及存储介质
CN112817622A (zh) 一种bios刷新方法、装置、电子设备和存储介质
CN111026463A (zh) 一种页面加载方法、装置、设备和存储介质
CN111562958A (zh) 页面数据展示管理方法以及装置
CN111859403A (zh) 依赖关系漏洞的确定方法、装置、电子设备及存储介质
CN111625326A (zh) 任务管线执行方法、装置及电子设备
CN113220507B (zh) 双主控系统的版本一致性检验方法及装置
CN114443582B (zh) 一种操作系统上文件系统挂载方法、装置、设备及介质
CN111046430B (zh) 数据处理方法及装置、存储介质及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination