命令行接口原理
CLI是一种不可缺少的配置工具,用户登录到路由器出现命令行提示符后即进入CLI。
CLI负责解析用户输入的命令及其所携带的相应配置信息的报文,实现用户对路由器的管理和配置。同时CLI提供命令的在线帮助等功能,帮助用户更好的使用CLI。
CLI命令解析的基本原理
CLI对用户输入的命令进行解析,通常经过以下五个阶段。
命令接收阶段
CLI接收并显示用户输入的所有字符。当用户键入回车符时,CLI开始处理命令。
命令匹配阶段
系统将接收的命令与当前命令模式中的所有命令进行比较,查找匹配的命令。
如果查询成功,系统进入命令检查阶段。
如果查询失败,系统将提示用户命令非法,等待用户输入新的命令。
命令检查阶段
以系统查询到的匹配命令为参照,比较用户输入的命令的各个命令元素,检查其字符串长度、取值范围等合法性。
如果命令元素合法,系统开始进行命令鉴权。
如果任一命令元素不合法,系统都将提示用户命令非法,同时等待用户输入新的命令。
命令鉴权阶段
系统把用户名及其所输入的命令在本地或者发送给AAA服务器进行命令鉴权,检查用户是否有权限执行该命令。
如果用户权限合法,系统开始进行命令解析。
如果用户权限不合法,系统将显示提示信息,同时等待用户输入新的命令。
命令解析阶段
CLI分解用户输入的命令,将其解析为携带了特定信息的报文。之后CLI将报文发送到命令的处理模块后,等待接收处理结果的报文。CLI收到处理完的报文后,再次进行解析,并在用户终端上显示解析结果。至此,系统完成该命令的处理。
CLI命令帮助的基本原理
CLI提供的命令在线帮助功能是CLI的基础功能之一。它可以帮助用户了解当前可以执行的配置命令、进行命令的联想、了解当前命令的参数的取值范围等。按照帮助的不同类型可以分为完全帮助、部分帮助和<Tab>帮助。
完全帮助
在任一命令视图下,在命令行提示符后直接键入“?”,CLI将列出该命令视图下所有命令的第一个命令元素及其简单描述。
键入一命令,后接以空格分隔的“?”,如果该位置为关键字,CLI将列出全部关键字及其简单描述。
键入一命令,后接以空格分隔的“?”,如果该位置为参数,CLI将列出参数取值的说明和参数作用的描述。
CLI在命令模式下为用户提供完全帮助,通常经过三个阶段。
命令接收阶段
CLI接收并显示用户输入的所有字符。当用户输入“?”时,CLI开始执行在线帮助命令。如果系统判断为完全帮助命令,则执行完全帮助。
命令匹配阶段
系统将接收的命令与当前命令模式中的所有命令进行比较,查找匹配的命令。
如果查询成功,系统将所有可能的命令与用户的权限进行匹配,得到用户可执行的命令集。
如果查询失败,系统将提示用户命令非法,等待用户输入新的命令。
命令帮助阶段
系统在用户可执行的命令集中找出在“?”的位置可能出现的命令元素。
若用户的输入已经为完整的命令,帮助信息显示为回车符<cr>。
若用户的输入还不是完整的命令,帮助信息显示为命令元素及其描述信息。
部分帮助
键入一字符串,其后紧接“?”,CLI将列出以该字符串开头的所有关键字。
- 键入一命令,后接一字符串紧接“?”,
若当前所处位置为关键字,CLI将列出命令以该字符串开头的所有关键字。
若当前所处位置为参数,且参数合法,CLI将列出以该字符串开头的所有参数的取值范围。
若当前所处位置为参数,参数不合法,CLI将提示用户输入错误。
CLI在特定的命令视图下为用户提供部分帮助,通常经过三个阶段。
命令接收阶段
CLI接收并显示用户输入的所有字符。当用户输入“?”时,CLI开始执行在线帮助命令。如果系统判断为部分帮助命令,则执行部分帮助。
命令匹配阶段
系统将接收的命令与当前命令模式中的所有命令进行比较,查找匹配的命令。
如果查询成功,系统将所有可能的命令与用户的权限进行匹配,得到用户可执行的命令集。
如果查询失败,系统将提示用户命令非法,等待用户输入新的命令。
命令帮助阶段
系统在用户可执行的命令集中找出在“?”的位置可能出现的命令元素,获取所有可能出现命令元素的信息输出。
<Tab>帮助
<Tab>帮助是部分帮助的一种应用,只对命令的关键字提供帮助,且系统不显示关键字的描述信息。
用户输入命令的某个关键字的前几个字母,按下<Tab>键。
Tab帮助信息将按照字典序显示。
如果仅有一个命令元素对应于用户的输入,可以显示出完整的关键字。
如果用户的输入无法标识唯一的命令元素时,连续按下<Tab>键,系统循环显示可能的匹配结果。
如果用户的输入与命令元素不匹配,系统不做任何修改,重新显示用户的输入。
如果该命令元素不是命令关键字,系统不做任何修改,重新显示用户的输入。
CLI提供了查询数据库和运行脚本的动态帮助。如果命令参数实现了动态帮助,用户输入命令的某个参数的前几个字母,按下<Tab>键,
如果仅有一个参数元素对应于用户的输入,可以显示出完整的参数。
如果用户的输入无法标识唯一的参数元素时,连续按下<Tab>键,系统循环显示可能的匹配结果。
CLI支持快捷键功能
系统中的快捷键分为系统快捷键和自定义快捷键。
提供给用户、可以自由定义的快捷键:用户可以根据自己的需要将快捷键与任意命令进行关联,当使用快捷键时,系统自动执行它所对应的命令。
系统快捷键:是系统中固定的。这种快捷键不能由用户自定义,代表固定功能。
由于不同的终端软件对于某些键的解释不同,具体终端上实际可用的快捷键与本节所列举的按键组合可能略有差异。
CLI的安全管理策略
用户执行命令时需要进行权限认证。CLI在启动的时候会向本地AAA查询命令鉴权策略。查询后,所有命令按此策略进行鉴权。