IOS特性之IOS Shell

IOS,即Internetwork Operating System。是Cisco网络设备运行的CLI交互模式的操作系统。也并非所有思科设备都运行IOS,例如ASA防火墙和运行IOS-XR的运营商路由器等。

熟悉Linux、Unix的工程师在操作IOS的时候会发现IOS和Linux shell有许多相似的地方。例如

使用dir命令,可以看到和Linux ls命令相似的文件列表。其中有Inode、权限、时间戳等我们熟知的参数。

有过系统运维经验的朋友一定试过这个命令

利用Uname命令查看系统内核版本。我也尝试过这个命令,得到如图所示的提示。大致内容是说我键入的命令在IOS.sh中可用,然而这个shell现在被禁用了,我可以用相关命令开启它。在整个Cisco的学习过程中,我并没有学习过,甚至没听别人提及这个小功能。在尝试这个指令后我查询过相关的资料,对于这个Function也是描述较少。

首先我们看一下这条命令和它的功能

这条命令字面意思是开启所有IOS shell模块

我们键入这条命令后也没有任何的提示
开启这条命令后我们再次尝试一下

可以看到我们当前IOS版本为15.4
看一下CISCO官方给出的功能解释

大致意思是IOS.sh特性基于IOS CLI环境,想要使用这个特性需要在配置中打开,IOS.sh打开后,用户可以执行以下的任务
定义和使用环境变量
使用控制结构来执行自动化任务
创建和使用IOS.sh函数
使用新的函数集,多样化的文本调用
可以使用扩展的管道符让输出的结果作为下个命令的输入
对文本和变量值集的算法表达和逻辑评价
使用在线帮助手册描述这些变化
所有这些特性都有描述,有举例说明。
但是IOS.sh支持的命令较少,虽然这个特性让人眼前一新,很有开发的潜力,但是局限性也是很大。
IOS.sh中我们也可以使用man命令来获取帮助

好了,介绍就到此为止,我们来尝试下开启shell proccessing full之后有什么好玩的小技巧吧
  • 首先是最简单的,变量可以使用了。

    分号分割的多条命令,依次执行

    既然我们可以使用变量了,让我们利用位置变量创建一个简单的脚本并进行测试
    脚本相当于R1#conf t
    R1(config)#int $1
    R1(config-if)#descri $2
    R1(config)#end
    测试我们的脚本

    在我们执行脚本的过程中,第一个参数’e0/0’就是脚本中的$1,’Hello world’就是$2。这就是位置变量的应用。
    在举个例子,例如我们OSPF接口配置

    进行测试

    在实际工作中,需要大量配置的场景,利用IOS.sh可以大幅度简化我们的操作。
  •  过滤我们显示的内容
    在Linux运维中,针对文件多种过滤方法可以让我们快速定位到想要的内容。在IOS.sh完全开启后,我们也可以像Linux一样,利用管道符’|’和一些命令对显示内容进行过滤。
    举个例子,我们现在要显示show run 命令中所有带有no的行,可以

    有人会说不开启shell processing full用show run | sec no也能实现,但是开启之后我们可以这样
    例如显示这些带no行中第二列的内容

    这里解释一下,cut -f 2 -d ‘ ‘的意思是:以空格为界限,显示管道之前内容的第二列。
    利用这些功能,我们可以像这样

    查看所有接口的IP地址

    查看前五行内容

    查看历史信息最后5行
    到这里,是不是有点系统运维的感觉了呢?
  • 支持for,while等多种循环结构

  • 创建一个简单的for循环测试

测试结果

  • 创建一个简单的if判断 主机保活测试

    测试结果

测试几个小脚本
  • 例如这是一个方便我们创建VLAN的脚本

我们利用这个脚本创建VLAN,只需要Router(config)#vlan interface vlan-id就能很便捷的为接口创建VLAN
进行测试

如图所示,我们省略了大部分繁琐的操作,实现了快速创建VLAN的方法。

  • 这是一个快速为接口创建IP地址的脚本

进行测试

也许你还嫌不够精简,我们可以为192.168.1.0网段和24位子网设置环境变量

这下我们只需要引入环境变量就能配置IP,像这样

省去了一些操作。

 

 

在CCIE的LAB实验中也有简短的关于IOS shell的考核。算是比较细枝末节的东西了,而且考核非常简单,就是针对输出进行内容过滤。以上的几个例子只是抛砖引玉,也许作用放不明显,但是合理应用这个特性,会更加简洁的实现我们的工作。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇