使用 Cisco IOS.sh 和 grep

网络工程 思科-ios 命令行
2021-07-22 16:24:15

我刚刚了解了 Cisco IOS.sh,发现您可以在 Cisco 设备上运行类似于基于 UNIX 的系统的命令。

第一个问题:IOS.sh 是路由器还是交换机特定的?还是只要固件版本为 15.1 或更高版本,它们就可以用于两种类型的设备?

第二个问题:既然 IOS.sh 已启用,有没有办法使用 grep 获取一个部分并将其输出到我正在查看的 CLI 上?

例如,我想在其中找到sh run与 value 匹配的任何内容switchport trunk,但不是运行sh run | i switchport trunk和输出多行无用的结果,而是有一个 grep 命令来获取这些结果的一部分?

见下文:

使用 show run | include switchport trunk

 switchport trunk encapsulation dot1q
 switchport trunk encapsulation dot1q
 switchport trunk encapsulation dot1q
 switchport trunk encapsulation dot1q
 switchport trunk encapsulation dot1q

更多我在 IOS.sh 和 grep 中寻找的东西

interface GigabitEthernet1/0/21
 switchport trunk encapsulation dot1q
 switchport mode trunk
!
interface GigabitEthernet1/0/22
 switchport trunk encapsulation dot1q
 switchport mode trunk
!
interface GigabitEthernet1/0/23
 switchport trunk encapsulation dot1q
 switchport mode trunk
1个回答

Cisco IOS Shell 适用于 Cisco 路由器和交换机。

Cisco IOS Shell (IOS.sh) 功能为 Cisco IOS 命令行界面 (CLI) 环境提供 shell 脚本功能。Cisco IOS.sh 通过包括变量替换、路径、条件语句、循环、管道等来增强使用 CLI 控制和配置 IOS 路由器的过程,以增强 Cisco IOS CLI 用户的用户体验。

第一个问题: IOS.sh 是路由器还是交换机特定的?还是只要固件版本为 15.1 或更高版本,它们就可以用于两种类型的设备?

Cisco IOS Shell 是随 Cisco IOS 版本 15.1(4)M、15.1(2)S 和更高版本的路由器引入的。必须配置并启用 Cisco IOS.sh 才能使用路由器上的 Cisco IOS.sh 特性和功能。

我找不到任何文档来解释它何时被引入 IOS 用于交换机。

第二个问题:既然 IOS.sh 已启用,有没有办法使用 grep 获取一个部分并将其输出到我正在查看的 CLI 上?

IOS CLI 具有将命令中的文本“管道”到一组可以过滤或重定向输出的程序中的功能。Cisco IOS.sh 已扩展此功能以支持输入行上的多个“管道”命令。这些命令是并发执行的,并打印“管道”打印的最终命令。

例子

Router# show version | grep '^C'
Cisco IOS Software, 7200 Software (C7200-P-M), Experimental Version 12.2(20090611:002213)
Copyright (c) 1986-2010 by Cisco Systems, Inc.
Compiled Tue 16-Jun-10 14:23 by janedoe
Cisco 7204VXR (NPE225) processor (revision A) with 114688K/16384K bytes of memory.
Configuration register is 0x0

此示例打印所有以大写 C 开头的行。

对于在交换机上运行的新 IOS-XE 有类似的方法,例如 Cisco 3650、3850、9200、9300、9500 系列等。

这种方法称为Guestshell,它是一种基于Linux 的虚拟化环境,旨在运行自定义Linux 应用程序,包括用于自动控制和管理Cisco 设备的Python。它还包括系统的自动配置(第 0 天)。该容器外壳提供了一个与主机设备解耦的安全环境,用户可以在其中安装脚本或软件包并运行它们。

以下示例显示如何在 Catalyst 3850 系列交换机上启用 Guest Shell:

Device> enable
Device# guestshell enable 

Management Interface will be selected if configured
Please wait for completion
Guestshell enabled successfully

Device# guestshell run python

Python 2.7.11 (default, Feb 21 2017, 03:39:40) 
[GCC 5.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.

Device# guestshell run bash

[guestshell@guestshell ~]$

Device# guestshell disable 

Guestshell disabled successfully 

Device# guestshell destroy 

Guestshell destroyed successfully 

这里有关于如何将 Guestshell 用于 IOS-XE 的完整指南:https ://www.cisco.com/c/en/us/td/docs/ios-xml/ios/prog/configuration/166/b_166_programmability_cg/guest_shell .html

请注意,您需要运行 16.6 版。至少。

Cisco IOS Shell 白皮书:https : //www.cisco.com/c/en/us/td/docs/ios/netmgmt/configuration/guide/Convert/IOS_Shell/nm_ios_shell.pdf

Cisco IOS Shell 完整命令参考:https : //www.cisco.com/c/en/us/td/docs/ios-xml/ios/ios_shl/command/ios-shell-cr-book/ios-shell-cr -a1.html