在Dos环境中(比较新的版本),可以通过上下箭头来查找最近用过的命令。在Linux操作系统的命令行环境中,也有类似的功能。这些命令历史记录可以简化管理员在命令行下的工作。其实在路由器的IOS操作系统中,也有这方面的功能。而且功能要比Windows或者Linux操作系统下的命令行环境强大的多。可惜的是,有不少网络管理员在这方面只是掌握了一点皮毛。在这篇文章中,笔者就对此做一些详细的说明,希望对各位读者有所帮助。
一、系统的默认设置
命令历史功能对于多次使用命令很长或者很复杂的命令是非常有帮助的。在默认情况下,命令历史功能是启动的。也就是说,系统会自动在历史缓冲区中记录最近使用过的十条命令。当然这些默认的设置,网络管理员可以根据需要进行更改。如可以重新设置命令历史缓存的大小,让其保存更多的命令;或者说关闭命令缓存功能等等。在了解后续的操作以及维护命令历史功能之前,掌握这些默认配置是非常有必要的。
二、最简单的应用:使用Tab键补全命令行
在路由器管理中,有些命令比较长。如在思科的IOS软件中,大部分用的都是英文单词,很少使用缩略词。此时如果在维护的时候,要将一个单词输全,这不但对网络管理员的英文水平有比较高的要求,而且效率也不高。如要启用路由器的高级编辑特性,那么就需要输入命令terminal editing。一个字符都不能错。这个命令相对来说还是比较简单的。但是要一字不差的输入完整,即使对于英语过8级的管理员来说也有不小的难度。
那么有没有简单的方法呢?答案是肯定的。在命令历史记录功能中,有一个命令补全的功能。也就是说,管理员在输入命令的时候,不需要全部输入完整。而只需要输入前面几个字符,然后键入Tab键,系统就会自动补全后面的内容。简单的说,就是在输入命令的时候,管理员可以输入表示这个命令的唯一字符串,然后按下Tab键,用户界面就会替你完成后续的命令行。注意这里有一个唯一性的要求。
如上图所示,如果要在命令行中输入terminal,不需要输全。只需要输入前面几个字符,如te,然后按一下Tab键,系统就会自动将后面的字符补全,从而简化系统管理员的输入。
另外需要说明的一点是,这个命令补全功能跟Linux操作系统下的命令补全功能有一定的差异。在Linux操作系统下,并没有唯一性的要求。也就是说,如果输入的字符不唯一的话,此时输入Tab键,系统将会列出所有以这个输入的字符开头的命令。而在IOS命令行中,如果输入的字符不唯一,那么按Tab键将不会有任何反应。或许在以后的IOS版本中这方面有所改进。笔者刚开始学的是Linux操作系统,后来才转向网络维护。在刚开始的时候,特别的不习惯。相信不好网络管理员也会更笔者有类似的感受。
三、查看并调用最近使用过的命令
命令历史记录功能核心的任务是记录用户最近所使用的命令。在路由器维护中,管理员往往需要查看最近使用的命令,以了解最近对路由器进行的操作,或者选择某条命令重新执行。要完成这项工作的话,可以通过命令show history来完成。如下图所示:
不过在使用这个命令的时候,需要注意一个问题。如上图所示,笔者一开始使用了一条命令(设置命令缓冲区的大小),但是系统显示命令出错,无法正常执行。可是在命令历史记录中,仍然会显示出这条命令的记录。也就是说,无论管理员输入的命令是否是正确的,系统都会一五一十的记录下来。而不是说,命令历史中的记录都是被正确执行的。如此的话,用户后续在选择命令执行的时候,就需要有一个核对的动作。即需要判断当前的命令语法是否有错误等等。
还有一点需要说明的是,路由器有几种执行模式。如接口模式、子接口模式、Linemoshi 、路由器模式、路由映射模式等等。还包括特权模式、全局配置模式等等。注意这些模式并不是简单的功能划分而已。其核心的功能是权限的控制。如在非特权模式下,只能够查看路由器的相关信息,而不能够对其进行修改。如果要进行修改的话,如需要更改IP地址等等,这必须要进入特权模式。有时候还需要进入到全局配置模式或者其他的特定配置模式。笔者之所以提出这些工作模式,主要是为了说明在命令历史记录中,并不会借鉴这种工作模式。这是什么意思呢?假设网络管理员在全局配置模式下,利用命令更改了路由器的名字。然后退回到非特权模式。此时使用方向键来查看命令历史记录的时候,仍然可以看到刚才的命令。但是如果按下回车键来执行这个命令的时候,则系统就会报错。因为缺乏相关的权限或者对应的工作模式不对。
那么如何来调取命令历史记录中的命令重新执行呢?这里有好几种方法。但命令行中地记录不多,或者说需要调用刚才使用过的命令的时候,这可以采用方向键来调取。如点一下向上的方向键,则系统就会调出刚才使用过的命令。由于这种方法相对简单,笔者比较喜欢使用。另外,如果管理员有需要的话,也可以使用组合键来完成。如Ctrl键+数字键,这对组合键可以用来指定执行下一条命令。其次使用Ctrl+P组合键(最近使用的命令出现在最前面)可以重执行新最近一条(即前一条)命令。其对应的就是向上的方向键和向下的方向键。利用组合键显然没有直接使用方向键那么方便。当然萝卜青菜各有所爱,具体使用哪种方式还是需要根据管理员的习惯而定。
四、调整缓冲区的大小
笔者在文章一开头就谈到,默认情况下系统记录的历史命令只有十条,即最近使用过的十条命令(包括没有执行成功的)。在有些情况下,这点记录可能不够用。特别是在网络组建的时候,需要大量的配置与测试工作。此时管理员就喜欢系统记录的命令能够多一点,以方便他们使用。
在IOS中,允许用户更改命令缓冲区的大小。如上面第一张图所示,命令Terminal History就是用来设置命令缓冲区大小的命令。如可以将其设置为20或者更多。不过一般来说,不建议设置的太多。因为这些历史纪录其是保存在路由器的内存当中的。如果记录数量一多的话,就会占用路由器宝贵的内存,从而影响到路由器的正常运行。通常来说,只要路由器运行正常之后,笔者建议还是将这个缓冲区的大小恢复为默认值最好。如果确实不必要的话,还可以将其关闭。这有可能是从安全角度考虑。如攻击者可以从历史命令中查看路由器的最近配置,包括口令等信息。IOS中有一种口令是明文存储的,从历史命令中可以看到这个密码信息。所以这历史命令记录还是一把双刃剑。一方面其可以方便网络管理员的操作,另一方面其也会将一些机密信息“奉送”给攻击者,为其入侵提供方便。
所以对这个命令历史记录功能在使用过程中,还是需要谨慎。