本文档介绍Cisco IOS® Shell(IOS.sh)CLI模块。
思科建议您了解Cisco IOS版本15.1(4)M、15.1(2)S和更高版本。必须配置并启用Cisco IOS.sh,才能在路由器上使用Cisco IOS.sh的特性和功能。
本文档中的信息基于下列硬件和软件版本:
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
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
}
目前没有针对此配置的故障排除信息。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
05-Jul-2013 |
初始版本 |