思科ssh配置命令(cisco交换机ssh配置命令)

随着这几年网络运维自动化技术的大热,思科的CCIE EI考试中已经纳入了有关Python的笔试和实验试题。去年我写了一篇《网络工程师的Python之路 — 思科IOS-XE内置Python及其内置CLI模块》的专栏文章,向大家介绍了怎么在思科IOS-XE设备中使用其内置的Python以及思科自家造的第三方模块:CLI。

虽然由于一些政策性的原因,思科在国内的江湖地位大不如前,但是在我几千名读者中依然不乏有在日常工作中和思科设备打交道,以及有想法准备出国闯荡准备重拾思科技术的,还有正在准备CCIE EI考试的。今天就带大家回顾一下目前在思科接入层设备里比较主流的IOS-XE操作系统,以及顺便介绍一个大多数曾经或者正在和思科设备打交道的读者们不知道的干货:如何在IOS-XE设备上启用并输入Linux命令,帮助我们配合Python更好的完成平时一些运维自动化需求。


众所周知,作为思科大名鼎鼎的IOS操作系统的继承者,思科的IOS-XE操作系统诞生至今已经有13年的历史了。IOS-XE最早是搭配在思科ASR 1000系列的路由器和Catalyst 3850系列的交换机上发布的,后续的Catalyst 9200, 9300, 9400, 9500,9600交换机以及ISR 1000, ISR 4000, ASR 920等系列的路由器都沿用了IOS-XE这款操作系统。

思科ssh配置命令(cisco交换机ssh配置命令)

terminal shell不是永久开启的,每次SSH登陆设备开启一个新的SSH会话后必须重新手动开启,如果你想永久开启的话需要做如下配置:

思科ssh配置命令(cisco交换机ssh配置命令)

如果你问我最有代表性的linux命令是什么?那grep肯定榜上有名。玩过思科设备的都知道,思科最常见的过滤命令就是管道符后面配上include, exclude, begin, section等基于正则表达式的命令,但是你试过在思科设备上用grep来做过滤吗?

首先我们来看一下在没有开启linux shell情况下,使用grep会怎样:

思科ssh配置命令(cisco交换机ssh配置命令)

如果你是Linux老手的话,肯定知道grep能实现很多include, exclude, begin, section做不到的功能,比如在一台路由器上通过grep给出多个条件来过滤OSPF的路由前缀:

R1#show ip route | grep (150) | grep (10003)     O        150.1.2.2 [110/10003] via 155.1.146.4, 15:51:41, GigabitEthernet1.146O        150.1.3.3 [110/10003] via 155.1.146.4, 15:51:41, GigabitEthernet1.146O IA     150.1.22.22 [110/10003] via 155.1.146.4, 1d11h, GigabitEthernet1.14R1#show ip route | grep (150) | grep -v (10003)      150.1.0.0/32 is subnetted, 11 subnetsC        150.1.1.1 is directly connected, Loopback0O        150.1.4.4 [110/2] via 155.1.146.4, 15:51:57, GigabitEthernet1.146O        150.1.5.5 [110/3] via 155.1.146.4, 15:51:57, GigabitEthernet1.146O        150.1.6.6 [110/2] via 155.1.146.6, 1d12h, GigabitEthernet1.146O IA     150.1.7.7 [110/3] via 155.1.146.6, 1d12h, GigabitEthernet1.146O IA     150.1.8.8 [110/4] via 155.1.146.4, 15:52:07, GigabitEthernet1.146O IA     150.1.9.9 [110/4] via 155.1.146.6, 1d12h, GigabitEthernet1.146O IA     150.1.10.10 [110/5] via 155.1.146.4, 15:52:07, GigabitEthernet1.146

使用nl给回显内容添加行数

当年考过CCIE的思科老手们都知道show run这个命令后面可以接一个linenum来查看回显内容总共有多少行,以防止被考官TR,如下:

思科ssh配置命令(cisco交换机ssh配置命令)

现在我们开启了Linux Shell后,可以用nl(number of line的简写)来实现这个目的:

思科ssh配置命令(cisco交换机ssh配置命令)

不要小看这个功能,它能配合grep来完成一些我们需要通过Python才能实现的功能,比如说以上图的show version的回显内容为例,如果我们只想根据排数指定过滤出其中的某一排内容,这个时候你用传统的include, exclude, begin, section等过滤方法就很难做到,比如说我们想过滤出show version回显内容的第128排的内容,可以这么操作:

思科ssh配置命令(cisco交换机ssh配置命令)

这里就不一一解释了,自己配合man来理解:

思科ssh配置命令(cisco交换机ssh配置命令)

既然是Shell,那是不是可以直接编程?当然可以。

对shell编程熟悉的一看就懂,不熟的但是有Python功底的也应该都懂:

创建变量、变量赋值、调用变量:

思科ssh配置命令(cisco交换机ssh配置命令)

函数:

思科ssh配置命令(cisco交换机ssh配置命令)

怎么样?强不强大?是不是可以替代部分Python功能了?

(0)
小多多的头像小多多创始人

相关推荐

发表回复

登录后才能评论