内容

概要

前提条件

要件

使用するコンポーネント

背景説明

設定

パイプとリダイレクション

組み込みアプレット

条件

ループ

文字列操作

設定例

確認

トラブルシュート

関連情報

概要

このドキュメントでは、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 Release 15.1(1)SY

このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期（デフォルト）設定の状態から起動しています。対象のネットワークが実稼働中である場合には、どのようなコマンドについても、その潜在的な影響について確実に理解しておく必要があります。

背景説明

Cisco IOS.sh は、Cisco IOS CLI でシェル スクリプトを使用できるようにするモジュールです。このモジュールを使用すると、定期的な処理を自動化したり、デバイス管理を簡素化したりできます。このモジュールは、Cisco IOS Embedded Event Manager （EEM）などの他の管理ツールと組み合わせて使用できます。

設定

注：このセクションで使用されるコマンドの詳細については、Command Lookup Tool（登録ユーザ専用）を使用してください。

デバイスで Shell CLI をイネーブルにするには、次のコマンドを入力します。

Switch#terminal shell

Shell CLI をディセーブルにするには、次のコマンドを入力します。

Switch#terminal no shell

この機能では PATH 変数がサポートされます。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 シェルと同じです。2 つの演算子を使用できます。

次に、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演算子は、次の変更とともに使用できます。

演算子

説明

==

String 1 == string2。文字列が等しい場合に 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