目錄

簡介

必要條件

需求

採用元件

背景資訊

設定

管道和重定向

嵌入式Applet

狀況

循環

字串操作

組態範例

驗證

疑難排解

相關資訊

簡介

本檔案介紹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 系列交換器

- Cisco IOS版本15.1(1)SY

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路正在作用，請確保您已瞭解任何指令可能造成的影響。

背景資訊

Cisco IOS.sh是一個允許在Cisco IOS CLI中使用外殼指令碼的模組。此模組有助於自動化日常操作並簡化裝置管理。它可以與其他管理工具(例如Cisco IOS嵌入式事件管理器(EEM))結合使用。

設定

附註：使用命令查詢工具(僅供已註冊客戶使用)可獲取本節中使用的命令的更多資訊。

要在裝置上啟用外殼CLI，請輸入：

Switch#terminal shell

要禁用命令列介面，請輸入：

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)

嵌入式Applet

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 shell中的循環相同。可以使用兩個運算子。

以下是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#

字串操作

對於字串比較，如果……然後…….else運算符可用於以下修改：

運算子

說明

==

字串1==字串2，如果字串相等，則為True。

!=

String1 != string2 ，如果字串不等於，則為True

<

String1 < string2，如果string1的字典號小於string2，則為True

>

String1 > string2，如果string1的字典號大於string2，則為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