前面总是憋长篇,动辄上w字,写一个多星期,实在是有点对不起观众,再则就是书看多了也该做做小实验了,XD,今天就来做一下cisco的管道符的实验,没找什么材料,实验所得论据,只能参考不能偏信。当然,管道不是水管,学名应该叫输出选择器,到底是啥,看下两幅图。

cisco的管道符

没错,就是这货,可能平时你们经常用其中的be、in、se,一般来说se用最多,实在设备不支持采用in和be结合,那他们又是什么作用呢,虽然大家都知道,但是还是截个小图,没错就在下面!如果是be,表明从包含后面正则表达式的行开始,一般情况下我们使用一个纯字符串,比如

cisco的管道符

没错就是把showrun从第一次出现aaa那行开始显示,接下来是in和se的区别

cisco的管道符

in的话很简单,就是显示出包含后面正则表达式的那一行,如果多行包括显示多行;如果是se,一般多用来匹配协议,简单的说就是从包含这个正则表达式的,一个非空格开头的行,到下一个非空格开头的行之间。以上三个比较常用,接下来有一个不常用的,但是很好玩的,就是ex,如下图

cisco的管道符

嗯,我就是要排除eigrp,看看啥现象

cisco的管道符

哎哟沃茨奥,你他妈在逗我,这,有什么作用呢,我想想,可能在查看路由表的时候,比如说ospf的,可以排除O的条目,或者OIA的,应该还有其他作用,有待发现。好,接下来也是四个比较相关的参数,append、tee和redirect

cisco的管道符

这三个小伙伴有啥用呢,虽然叔四级没过,但是叔还是能看得懂的,因为叔有有道词典,tee是说copy输出到一个URL,redirect是说重定向输出到URL,append是说添加重定向输出到一个URL,什么意思呢,做一下看现象,如下图

cisco的管道符

上图的现象是tee把show的内容显示出来了,其他两个没有,但是我后面有写文件名,是希望他们保存,检查文件内容如下。

cisco的管道符

好像三个都写进去了,那他们区别在哪里呢,不着急,我们再写一遍show带管道符的命令试试,为了使得时间上看去不一样,我们修改一下时间。

cisco的管道符

再来写管道符命令,自习看输出提示。

cisco的管道符

我和我的小伙伴都惊呆了,tee和redirect都提示文件名已经存在,是否覆盖,手一抖都覆盖了,但是append没有任何提示,再检查下文件变成什么样了。

cisco的管道符

果然tee和redirect的文件还是只有一句话,但是内容被覆盖了,可是append有两句话,所以总结如下:tee是先输出内容在cli界面,然后复制进指定URL内;redirect是将输出内容重定向到指定URL内,由于输出被重定向了,所以我们看不到cli界面有显示;append是将输出内容附加到指定URL内,也不会给我们显示在cli界面上;tee和redirect和append的指定URL不存在时,会自动生成文件,但是如果都存在,tee和redirect会询问是否覆盖,覆盖之后之前的文件就没有了,但是append的话就会在原来文件内容后附加上新内容。那如果,我又想立刻输出在cli界面上,又想保存在知道URL内,而且每次都保存在一个URL内,也就是每次都把输出附加在指定URL内能做到么。不要急,中华儿女多奇志,岛国人民欢乐多。我们的开发人员明锐的想到了这一点,所以我们有个参数是,tee /append,tee之后和斜杠中间有空格,如下图。

cisco的管道符

然后使用的结果如下,怒来了三遍,不多说看图。

cisco的管道符

嗯,最基本最简单的管道符介绍到这里,其实在管道符之后,我们还可以使用,对没错,就是我前面一直说的正则表达式,我们原来se、in、be的都是直接跟了字符串,其实我们还可以通过正则表达式,来完成更高级一点的输出选择。比如说我们平时查看接口信息,show interface,显示的内容虽然全但是太多,如下:

cisco的管道符

看到没,再才一个接口,后面还有很多more,那如果我们只想看接口队列,可以这么敲:

cisco的管道符

如果再想看MTU可以这么敲,这后面的|就不是表明管道符进行过滤了,而是正则表达式里面or的功能:

cisco的管道符

这个还可以使用多次,比如你想知道是哪些接口的mtu和队列是这样的,可以加上一个表明接口那一行都有的一个单词:

cisco的管道符

如果你经常用这条命令,懒得每次敲,我们还有一个可以给命令一个小名的神器:alias exec cy show interfaces | in Queueing | MTU | administratively这样

cisco的管道符

那么以后你敲cy就像这样,好神奇:

cisco的管道符

妥妥的,还可以使用比如说这样的,有两个内容被我选择,但是我只需要一个的:

cisco的管道符

那我可以使用正则表达式^route,表明以route开头的才被选择,结果如下:

cisco的管道符

当然我举的这个例子不算很好,因为只要写router就可以解决了,如果以后真遇到这种情况,可以使用这种方法,XD。那其实我们正则表达式是很流弊的,但是由于数学学的不好只能说道这里了,其实在BGP的as-filter-list也用到了,可以看我前面的BGPv4的配置手册的读书笔记,然后由于包子妈大人催侍寝,我必须马上睡觉了,就不再研究了,小伙伴们自己努力好好学习天天想上。最后来个好像很犀利的,人家文档的截图:

cisco的管道符

cisco的管道符

既然用了人家内容,其实也参看了人家的思路,所以还是要把人家连接贴出来,没错就是这个:http://www.2cto.com/net/201307/225017.html

那好吧,最后如果大家想转载,这么乱,也会有人想转载么,嗯,请告知下作者,当我没说,也不会有人转载的。侍寝去了,这是苦逼IT工程师的节奏!!!


2013-08-18   03:30