目录

简介

先决条件

要求

使用的组件

背景信息

配置

管道和重定向

嵌入式小程序

条件

环路

字符串操作

配置示例

验证

故障排除

相关信息

简介

本文档介绍Cisco IOS® Shell(IOS.sh)CLI模块。

先决条件

要求

思科建议您了解Cisco IOS版本15.1(4)M、15.1(2)S和更高版本。必须配置并启用Cisco IOS.sh，才能在路由器上使用Cisco IOS.sh的特性和功能。

使用的组件

本文档中的信息基于下列硬件和软件版本：

- Cisco Catalyst 6500 系列交换机

- 思科IOS版本15.1(1)SY

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您使用的是真实网络，请确保您已经了解所有命令的潜在影响。

背景信息

Cisco IOS.sh是一个模块，允许您在Cisco IOS CLI中使用外壳脚本。此模块有助于自动化日常操作并简化设备管理。它可与其他管理工具(如Cisco IOS嵌入式事件管理器(EEM))配合使用。

配置

注意：使用命令查找工具（仅限注册用户）可获取有关本部分所使用命令的详细信息。

要在设备上启用Shell CLI，请输入：

Switch#terminal shell

要禁用Shell CLI，请输入：

Switch#terminal no shell

此功能支持PATH变量，该变量包含可供外壳搜索功能/小程序的目录列表。此外，Shell CLI还支持以下功能：

管道和重定向

Switch#show version | grep 15.1

Cisco IOS Software, s2t54 Software (s2t54-ADVENTERPRISEK9-M),

Version 15.1(1)SY, RELEASE SOFTWARE (fc2)

Switch#show version | grep 15 > bootdisk:version.txt

Switch#dir bootdisk:

Directory of bootdisk:/

14  -rw-         280  Nov 15 2012 23:25:32 +00:00  version.txt

1024557056 bytes total (577273856 bytes free)

Switch#cat bootdisk:version.txt

Cisco IOS Software, s2t54 Software (s2t54-ADVENTERPRISEK9-M),

Version 15.1(1)SY, RELEASE SOFTWARE (fc2)

嵌入式小程序

Cisco IOS.sh包含几个内置小程序，可帮助为用户功能创建应用和过滤器：

[[             evaluate a logical test expression

cat            output data from a pipe or file to the terminal

cut            edit piped output

echo           echo arguments to the terminal

false          return false in while or if expressions, and set the result

fetch          return values from the configuration database

grep           search for regular expressions in piped output or files

head           print the first lines in the input

interface      print interfaces that match the argument

let            evaluate a numeric expression, and set the result

man            print information for built-ins

more           page piped output to the terminal

nl             number the lines in the input

null           ignore the input

printf         output formatted data to the terminal

read           read input into variables

set_oper       set operational values

sleep          pause execution of the terminal

sort           sort the input

tail           print the tail of the input

true           return true in while or if expressions, and set the result

uname          print system information

wc             count lines, words, and characters

条件

以下是if...然后…….else运算符。

Switch#x=5

Switch#if [[ $x != 5 ]];

then.else.fi>then

then.else.fi>echo false;

then.else.fi>else

else..fi>echo true;

else..fi>fi;

true

Switch#

以下比较运算符用于处理整数值：

运算符

描述

-eq

Arg1-eq Arg2。如果Arg1等于Arg2，则为True

-ne

Arg1-ne Arg2。如果Arg1不等于Arg2，则为True

-lt

Arg1-lt Arg2。如果Arg1小于Arg2，则为True

-gt

Arg1-gt Arg2。如果Arg1大于Arg2，则为True

-ge

Arg1-ge Arg2。如果Arg1大于或等于Arg2，则为True

-le

Arg1-le Arg2。如果Arg1小于或等于Arg2，则为True

以下条件可用于处理文件：

运算符

描述

-a或 — e

如果文件存在，则为True

-d

如果文件存在且是目录，则为true

-f

如果文件存在且是常规文件，则为True

-r

如果文件存在且可读，则为True

-s

如果文件存在且大小大于零，则为True

-w

如果文件存在且可执行，则为True

-nt

测试file1是否比file2更新。此比较使用文件上的修改日期

-ot

测试file1是否比file2旧

要在比较运算符中使用多个条件，可以使用以下逻辑运算符：

&&    Logical AND

||    Logical OR

环路

环路与Linux外壳中的环路相同。有两个运算符可用。

以下是for运算符的命令：

Switch#for x in 11

do..done>do

do..done>ping 192.0.2.$x

do..done>done

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.0.2.10,timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms

Switch#

以下是while运算符的命令：

Switch#for i in 1 2 3

do..done>do

do..done>while [ $i -lt 3 ]

do..done>do

do..done>echo $i

do..done>done

do..done>i=i+1

do..done>done

Switch#

字符串操作

对于字符串比较，if...然后…….else运算符可用于以下修改：

运算符

描述

==

字符串1 ==字符串2，如果字符串相等，则为True。

!=

字符串1 != string2，如果字符串不相等，则为True

<

字符串1 <字符串2，如果字符串1的字典编码小于字符串2，则为True

>

字符串1 >字符串2，如果字符串1的字典大于字符串2，则为True

配置示例

Switch#function add_desc() {

{..} >show running-config interface Gi$1

{..} >configuration terminal

{..} >interface Gi$1

{..} >description $2

{..} >end

{..} >show running-config interface Gi$1

{..} >}

Switch#add_desc 5/1 SHELL_TEST

Building configuration...

Current configuration : 74 bytes

!

interface GigabitEthernet5/1

ip address 192.0.2.10 255.255.255.0

end

Enter configuration commands, one per line.  End with CNTL/Z.

Building configuration...

Current configuration : 98 bytes

!

interface GigabitEthernet5/1

description SHELL_TEST

ip address 192.0.2.10 255.255.255.0

end

Switch#

验证

使用本部分可确认配置能否正常运行。

输入show terminal命令以显示当前终端配置：

Switch#show terminal

Line 2, Location: "", Type: "XTERM-COLOR"

Length: 44 lines, Width: 155 columns

Baud rate (TX/RX) is 9600/9600

Status: PSI Enabled, Ready, Active, No Exit Banner, Ctrl-c Enabled

........

Preferred transport is lat.

Shell: enabled

Shell trace: off

输入show shell functions命令以显示模块中可用的所有功能，包括用户定义的功能：

Switch#show shell functions

#User defined functions:

Function namespace: DEFAULT

function add_desc()

{

show running-config interface Gi$1

configure terminal

interface Gi$1

description $2

end

show running-config interface Gi$1

}

故障排除

目前没有针对此配置的故障排除信息。

相关信息

- Catalyst 6500配置指南

- 技术支持和文档 - Cisco Systems